home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / fsw / zm302 / zm302_m.lzh / ZM16.MAN < prev    next >
Text File  |  1997-02-26  |  117KB  |  3,002 lines

  1.  
  2.         MEASURE16
  3.  
  4.          C言語ライブラリ
  5.  
  6.  
  7.   ZMUSIC Ver.3.0用のC言語ライブラリに
  8.  
  9. ついて解説します。
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17. 16.1.ZMUSIC Ver.3.0用C言語ライブラリの構成
  18.  
  19.  
  20.  ZMUSIC Ver.3.0用のC言語ライブラリは以下の3つのファイルで構成されている。
  21.  
  22.     ZMSC3LIB.L    C言語用ライブラリ
  23.     ZMSC3LIB.A    C言語用ライブラリアーカイヴファイル
  24.     ZMSC3LIB.H    C言語用インクルードファイル
  25.     ZMSC3LIB.DEF    BC.X用DEFファイル
  26.  
  27.  
  28. 16.2.ZMSC3LIB.Hの利用法
  29.  
  30.  
  31.   自分のシステムの、インクルード・ファイルが格納してあるディレクトリに
  32.  
  33. ZMSC3LIB.Hをコピーする。
  34.  
  35.     A>COPY ZMSC3LIB.H A:\INCLUDE
  36.  
  37.   ZMSC3.XをC言語のプログラムから使いたい場合は、そのプログラムの冒頭に
  38.  
  39.     #INCLUDE    <ZMSC3LIB.H>
  40.  
  41. の1行をつける。
  42.  
  43.  
  44. 16.3.ZMSC3LIB関数一覧
  45.  
  46.  
  47. [注意]
  48.  
  49.  備考欄の
  50.  
  51.     setup[7]:Output Assign                  (0~4:Dry,Rev,Cho,Dir1,Dir2)
  52.  
  53. といった表記は実際にsetup[7]に格納すべき値が0~4で、これに対応する
  54.  
  55. 音源上でのパラメータがDry,Rev,Cho,Dir1,Dir2ということを表す。
  56.  
  57.  つまりこの例でいけば、0がDryに、1がRev、2がChoに対応するということ。
  58. *-----------------------------------------------------------------------------
  59.     int    zm_check_zmsc( void);
  60.  
  61. 機能    Z-MUSICの常駐状態を検査する
  62.  
  63. 引数    なし
  64.  
  65. 戻り値    -1:エラー(常駐していなかった)
  66.     $3x4x:バージョンID
  67.  
  68. 備考    バージョンIDはたとえばZMSC3.X Version 3.12が常駐していたならば
  69.     $3142が返ってくる。
  70. *-----------------------------------------------------------------------------
  71.     int    zm_get_zmlibver( void);
  72.  
  73. 機能    ライブラリのバージョンを返す
  74.  
  75. 引数    なし
  76.  
  77. 戻り値    $?.??:バージョンID
  78.  
  79. 備考    バージョンIDはたとえば0.01ならば$001が返ってくる。
  80. *-----------------------------------------------------------------------------
  81.     int    zm_init( int param);
  82.  
  83. 機能    Z-MUSICと音源の初期化を行う
  84.  
  85. 引数    int param:0(dummy)
  86.  
  87. 戻り値    Z-MUSICのバージョンID
  88.  
  89. 備考    paramは将来の拡張用で、現時点ではかならず0を設定する。
  90.     バージョンIDはたとえばバージョン3.21ならば $00003241となる。
  91.     4の部分は固定値。
  92. *-----------------------------------------------------------------------------
  93.     int    zm_assign( int device,int track);
  94.  
  95. 機能    チャンネルとトラックの割り付けを設定する
  96.  
  97. 引数    int device(上位16ビット):0=FM音源,1=ADPCM音源
  98.                  $8000=MIDI1,$8001=MIDI2
  99.                  $8002=MIDI3,$8003=MIDI4
  100.                  -1=カレントMIDI
  101.     int device(下位16ビット):チャンネル番号0-15
  102.     int track:トラック番号0-65534
  103.  
  104. 戻り値    0:正常終了
  105.     0以外:エラーコード
  106.  
  107. 備考    カレントMIDIはMIDIインターフェース番号を指定しない場合の
  108.     デフォルトとなるものでzm_current_midi_out()で設定する
  109. *-----------------------------------------------------------------------------
  110.     int    zm_compiler( int mode,int size,char *zms,char **result);
  111.  
  112. 機能    ZMSをコンパイルする
  113.  
  114. 引数    int mode:d0-d6:検出するエラーの最大値/0:∞,1-127
  115.          d15:エラーテーブルリストを作成して出力するか(0:no,1:yes)
  116.     int size:ZMSサイズ
  117.     char *zms:ZMSが格納されているアドレス
  118.     char **result:コンパイラが出力したZMD/エラーリストのアドレスを
  119.               格納する変数
  120.  
  121. 戻り値    0:正常終了(**resultにはZMDのアドレス)
  122.     0以外:コンパイルで発生したエラーの数(**resultにはエラーテーブルのアドレス)
  123.  
  124. 備考    ・エラーが発生するとchar **resultにエラーテーブルのアドレスが
  125.       代入される。char **resultはエラーリストを作成しない場合も必ず設定
  126.       すること。
  127.     ・エラーテーブルの構成に付いてはMEASURE11を参照のこと。
  128.     ・char **resultに返された領域は使用後zm_init()などを実行すればクリア
  129.       される。
  130.     ・char *zmsとint sizeを共に0にするとコンパイラの常駐解除となる。
  131.       通常は指定してはならない。
  132.     ・コンパイラは外部組み込みのファンクションであるため、使用前には
  133.       コンパイラの常駐を確認する必要がある。
  134. *-----------------------------------------------------------------------------
  135.     int    zm_vget( int timbre,int mode,char *buffer);
  136.  
  137. 機能    FM音源音色を取り出す
  138.  
  139. 引数    int timbre:音色番号(0-32767)
  140.     int mode:モード(0=OPMDRV.X互換,1=AL/FB分離方式)
  141.     char *buffer:音色データ格納バッファ
  142.  
  143. 戻り値    0:正常終了
  144.     0以外:エラーコード
  145.  
  146. 備考    char *bufferで表される音色データの書式は以下のとおり。
  147.  
  148.     音色フォーマット(OPMDRV.X互換方式)
  149.     0:AF(フィードバック/アルゴリズム) (0~63)  
  150.     1:OM(スロットマスク)            (0~15)  
  151.     2:WF(ウェーヴフォーム)          (0~3)   
  152.     3:SYC(シンクロ)              (0,1)    
  153.     4:SPD(スピード)            (0~255) 
  154.     5:PMD                    (0~127) 
  155.     6:AMD                    (0~127) 
  156.     7:PMS                    (0~7)   
  157.     8:AMS                    (0~3)   
  158.     9:PAN                    (0~3)   
  159.     10:DUMMY
  160.     11(OP1),22(OP2),33(OP3),44(OP4):AR(アタックレート)        (0~31)
  161.     12(OP1),23(OP2),34(OP3),45(OP4):1DR(1stディケイレート)   (0~31)
  162.     13(OP1),24(OP2),35(OP3),46(OP4):2DR(2ndディケイレート)   (0~31)
  163.     14(OP1),25(OP2),36(OP3),47(OP4):RR(リリースレート)        (0~15)
  164.     15(OP1),26(OP2),37(OP3),48(OP4):1DL(1stディケイレベル)  (0~15)
  165.     16(OP1),27(OP2),38(OP3),49(OP4):TL(トータルレベル)       (0~127)
  166.     17(OP1),28(OP2),39(OP3),50(OP4):KS(キースケーリング)      (0~3)
  167.     18(OP1),29(OP2),40(OP3),51(OP4):MUL(フェーズマルチプライ)  (0~15)
  168.     19(OP1),30(OP2),41(OP3),52(OP4):DT1(ディチューン1)      (0~7)
  169.     20(OP1),31(OP2),42(OP3),53(OP4):DT2(ディチューン2)      (0~3)
  170.     21(OP1),32(OP2),43(OP3),54(OP4):AME(AMSイネーブル)     (0,1)
  171.  
  172.     音色フォーマット(AL/FB分離方式)
  173.         00(OP1),11(OP2),22(OP3),33(OP4):AR(アタックレート)        (0~31)
  174.     01(OP1),12(OP2),23(OP3),34(OP4):1DR(1stディケイレート)   (0~31)
  175.     02(OP1),13(OP2),24(OP3),35(OP4):2DR(2ndディケイレート)   (0~31)
  176.     03(OP1),14(OP2),25(OP3),36(OP4):RR(リリースレート)        (0~15)
  177.     04(OP1),15(OP2),26(OP3),37(OP4):1DL(1stディケイレベル)  (0~15)
  178.     05(OP1),16(OP2),27(OP3),38(OP4):TL(トータルレベル)       (0~127)
  179.     06(OP1),17(OP2),28(OP3),39(OP4):KS(キースケーリング)      (0~3)
  180.     07(OP1),18(OP2),29(OP3),40(OP4):MUL(フェーズマルチプライ)  (0~15)
  181.     08(OP1),19(OP2),30(OP3),41(OP4):DT1(ディチューン1)      (0~7)
  182.     09(OP1),20(OP2),31(OP3),42(OP4):DT2(ディチューン2)      (0~3)
  183.     10(OP1),21(OP2),32(OP3),43(OP4):AME(AMSイネーブル)     (0,1)
  184.     44:AL(アルゴリズム)           (0~7)
  185.     45:FB(フィードバック)          (0~7)
  186.     46:OM(スロットマスク)            (0~15)
  187.     47:PAN                    (0~3)
  188.     48:WF(ウェーヴフォーム)          (0~3)
  189.     49:SYC(シンクロ)              (0,1)
  190.     50:SPD(スピード)            (0~255)
  191.     51:PMD                    (0~127)
  192.     52:AMD                    (0~127)
  193.     53:PMS                    (0~7)
  194.     54:AMS                    (0~3)
  195. *-----------------------------------------------------------------------------
  196.     int    zm_vset( int timbre,int mode,char *buffer);
  197.  
  198. 機能    FM音源音色を登録する
  199.  
  200. 引数    int timbre:音色番号(0-32767)
  201.     int mode:モード(0=OPMDRV.X互換,1=AL/FB分離方式)
  202.     char *buffer:音色データ格納バッファ
  203.  
  204. 戻り値    0:正常終了
  205.     0以外:エラーコード
  206.  
  207. 備考    音色フォーマットに付いてはzm_vget()とまったく同じ
  208. *-----------------------------------------------------------------------------
  209.     int    zm_tempo( int tempo,int mode );
  210.  
  211. 機能    テンポを設定する
  212.  
  213. 引数    int tempo:テンポの値(1分間の4分音符の数),-1テンポ取得のみを行う
  214.     int mode:0=ZMUSICに登録する(通常)
  215.          -1=単なるテンポの変更でZMUSICには登録しない
  216.  
  217. 戻り値    設定前のテンポとタイマ値が戻ってくる
  218.     上位16ビット:タイマ値
  219.     下位16ビット:テンポ値
  220.  
  221. 備考    テンポ値の有効範囲は使用するテンポ源タイマの種類によって異なる。
  222.     TIMER-A:20~32767
  223.     TIMER-B:20~5000
  224.     YM3802:1~32767
  225. *-----------------------------------------------------------------------------
  226.     int    zm_set_timer_value( int timer,int mode );
  227.  
  228. 機能    テンポをタイマ値で設定する
  229.  
  230. 引数    int timer:タイマの値,-1タイマ値取得のみを行う
  231.     int mode:0=ZMUSICに登録する(通常)
  232.          -1=単なるテンポの変更でZMUSICには登録しない
  233.  
  234. 戻り値    設定前のテンポとタイマ値が戻ってくる
  235.     上位16ビット:テンポ値
  236.     下位16ビット:タイマ値
  237.  
  238. 備考    テンポ値の有効範囲は使用するテンポ源タイマの種類によって異なる。
  239.     TIMER-A:0~1023
  240.     TIMER-B:0~255
  241.     YM3802:0~8191
  242. *-----------------------------------------------------------------------------
  243.     short    *zm_play( short    *track);
  244.  
  245. 機能    演奏開始制御
  246.  
  247. 引数    short *track:演奏を開始したいトラック番号の並び
  248.  
  249. 戻り値    演奏開始を行えなかったトラック番号の並び
  250.  
  251. 備考    short *track,戻り値共に
  252.     { short track,short track,.....,short track,(short)-1}
  253.     という構成を取る。ただしトラック番号は0-65534の範囲
  254. *-----------------------------------------------------------------------------
  255.     void    zm_play_all( void );
  256.  
  257. 機能    全トラック演奏開始制御
  258.  
  259. 引数    なし
  260.  
  261. 戻り値    なし
  262. *-----------------------------------------------------------------------------
  263.     void    zm_play2( void );
  264.  
  265. 機能    演奏開始制御
  266.  
  267. 引数    なし
  268.  
  269. 戻り値    なし
  270.  
  271. 備考    現在ZMUSICの演奏データバッファに存在する演奏データをはじめから
  272.     (共通コマンドの実行も含めて)演奏する。
  273. *-----------------------------------------------------------------------------
  274.     void    zm_play_again( void );
  275.  
  276. 機能    演奏開始制御
  277.  
  278. 引数    なし
  279.  
  280. 戻り値    なし
  281.  
  282. 備考    前回行われたzm_play()を再び実行する
  283. *-----------------------------------------------------------------------------
  284.     void    zm_play_status_all_ch( int *channel_list );
  285.  
  286. 機能    全チャンネル演奏状態検査
  287.  
  288. 引数    int *channel_list:検査結果を格納するためのバッファ
  289.  
  290. 戻り値    なし
  291.  
  292. 備考    演奏状態であるチャンネルIDが*channel_listに格納される。
  293.     {(int)active_device,(int)active_device,...,(int)-1 }
  294.     のような構成を取る
  295.     バッファサイズは演奏している(トラック数+1)*4バイト必要。
  296.     なおチャンネルIDは
  297.     (上位16ビット):0=FM音源,1=ADPCM音源
  298.                $8000=MIDI1,$8001=MIDI2
  299.                $8002=MIDI3,$8003=MIDI4
  300.                -1=カレントMIDI
  301.     (下位16ビット):チャンネル番号0-15
  302.     で表される。
  303. *-----------------------------------------------------------------------------
  304.     void    zm_play_status_all_tr( short *track_list );
  305.  
  306. 機能    全トラック演奏状態検査
  307.  
  308. 引数    short *track_list:検査結果を格納するためのバッファ
  309.  
  310. 戻り値    なし
  311.  
  312. 備考    演奏状態であるトラック番号(0-65534の範囲)が*track_listに格納される。
  313.     {(short)active_track,(short)active_track,...,(short)-1}
  314.     のような構成を取る
  315.     バッファサイズは演奏している(トラック数+1)*2バイト必要。
  316. *-----------------------------------------------------------------------------
  317.     int    zm_play_status_ch( int channel );
  318.  
  319. 機能    チャンネル演奏状態検査
  320.  
  321. 引数    int channel(上位16ビット):0=FM音源,1=ADPCM音源
  322.                  $8000=MIDI1,$8001=MIDI2
  323.                  $8002=MIDI3,$8003=MIDI4
  324.                  -1=カレントMIDI
  325.     int channel(下位16ビット):チャンネル番号0-15
  326.  
  327. 戻り値    0:演奏されていない
  328.     0以外:演奏されている
  329. *-----------------------------------------------------------------------------
  330.     int    zm_play_status_tr( int track );
  331.  
  332. 機能    トラック演奏状態検査
  333.  
  334. 引数    int track:検査対象トラック番号(0-65534)
  335.  
  336. 戻り値    0:演奏されていない
  337.     0以外:演奏されている
  338. *-----------------------------------------------------------------------------
  339.     short    *zm_stop( short    *track);
  340.  
  341. 機能    演奏停止制御
  342.  
  343. 引数    short *track:演奏を停止したいトラック番号の並び
  344.  
  345. 戻り値    演奏停止を行えなかったトラック番号の並び
  346.  
  347. 備考    short *track,戻り値共に
  348.     { short track,short track,.....,short track,(short)-1}
  349.     という構成を取る。ただしトラック番号は0-65534の範囲
  350. *-----------------------------------------------------------------------------
  351.     void    zm_stop_all( void );
  352.  
  353. 機能    全トラック演奏停止制御
  354.  
  355. 引数    なし
  356.  
  357. 戻り値    なし
  358. *-----------------------------------------------------------------------------
  359.     short    *zm_cont( short    *track);
  360.  
  361. 機能    演奏再開制御
  362.  
  363. 引数    short *track:演奏を再開したいトラック番号の並び
  364.  
  365. 戻り値    演奏再開を行えなかったトラック番号の並び
  366.  
  367. 備考    short *track,戻り値共に
  368.     { short track,short track,.....,short track,(short)-1}
  369.     という構成を取る。ただしトラック番号は0-65534の範囲
  370. *-----------------------------------------------------------------------------
  371.     void    zm_cont_all( void );
  372.  
  373. 機能    全トラック演奏再開制御
  374.  
  375. 引数    なし
  376.  
  377. 戻り値    なし
  378. *-----------------------------------------------------------------------------
  379.     char    *zm_atoi( int track );
  380.  
  381. 機能    演奏トラックデータの先頭アドレス取得
  382.  
  383. 引数    int track:トラック番号0-65534
  384.  
  385. 戻り値    0:エラー
  386.     0以外:指定演奏トラックの先頭アドレス
  387. *-----------------------------------------------------------------------------
  388.     MSTRCLK    *zm_set_master_clock( int side,MSTRCLK *mstrclk );
  389.  
  390. 機能    拍子,メトロノーム速度,調号,全音符の絶対音長の設定
  391.  
  392. 引数    int side:0=音楽演奏,1=効果音
  393.     MSTRCLK mstrclk:拍子,メトロノーム速度,調号,全音符の絶対音長を
  394.             格納した構造体のアドレス。
  395.             0ならば問い合わせのみ
  396.  
  397. 戻り値    MSTRCLK mstrclk=0とした時のみ、その時点の設定値を格納したMSTRCLK構造体の
  398.     アドレスが返る。それ以外は戻り値不定。
  399.  
  400. 備考    side=0で通常音楽演奏側の設定、side=1で効果音演奏側の設定となる。
  401.     MSTRCLK構造体
  402.     struct    MSTRCLK    {
  403.         char    meter_n;    /*拍子分子(1-255)*/
  404.         char    meter_d;    /*拍子分母(1-255)*/
  405.         char    metronome;    /*音楽的音長(1-255)*/
  406.         char    dummy;
  407.         char    key1;        /*調号1(0:C,負値:♭の数,正値:♯の数)*/
  408.         char    key2;        /*調号2(Major=0,Minor=1)*/
  409.         short    master_clock;    /*全音符の絶対音長(1-65535)*/
  410.     };
  411. *-----------------------------------------------------------------------------
  412.     int    zm_play_zmd( int size,char *zmd );
  413.  
  414. 機能    ZMDの演奏
  415.  
  416. 引数    int size:ZMDのサイズ(ヘッダ$1A,'ZmuSiC',$30の分は含まれていても
  417.          含まれていなくてもどちらでもよい)
  418.          0を設定するとZMUSIC本体のバッファへ演奏データを
  419.          取り込む動作を省略する。
  420.     char *zmd:ZMDの格納バッファ(ヘッダを含まず)
  421.  
  422. 戻り値    0:正常終了
  423.     0以外:エラーコード
  424.  
  425. 備考    int size=0とするには、char *zmdで表されるアドレスからの領域の存在が
  426.     演奏中も保証されることを前提とする。
  427. *-----------------------------------------------------------------------------
  428.     int    zm_play_zmd_se( char *zmd );
  429.  
  430. 機能    ZMDを効果音として演奏する
  431.  
  432. 引数    char *zmd:ZMDの格納バッファ(ヘッダを含まず)
  433.  
  434. 戻り値    0:正常終了
  435.     0以外:エラーコード
  436.  
  437. 備考    char *zmdで表されるアドレスからの領域の存在は、演奏中も
  438.     保証されなければならない。
  439. *-----------------------------------------------------------------------------
  440.     int    zm_se_play( char *zmd );
  441.  
  442. 機能    効果音ZMDの演奏
  443.  
  444. 引数    char *zmd:ZMDの格納バッファ(トラック・チャンネル情報テーブルから)
  445.  
  446. 戻り値    0:正常終了
  447.     0以外:エラーコード
  448.  
  449. 備考    char *zmdで表されるアドレスからの領域の存在は、演奏中も
  450.     保証されなければならない。
  451.     トラック・チャンネル情報テーブルに付いてはMEASURE12を参照。
  452. *-----------------------------------------------------------------------------
  453.     int    zm_se_adpcm1(char data_type,char volume,char frq,char pan,
  454.             int size,short priority,short ch,char *adpcm);
  455.  
  456. 機能    (AD)PCM効果音の演奏
  457.  
  458. 引数    char data_type:データタイプ(-1:ADPCM,1:16bitPCM,2:8bitPCM)
  459.     char volume:音量(0-127,64:標準)
  460.     char frq:再生周波数(0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz)
  461.     char pan:パンポット(0-3 / $80+0-127)
  462.     int size:再生するADPCMのデータサイズ
  463.     short priority:効果音優先度(0-255/0が最も低い)
  464.     short ch:再生チャンネル(0-15)
  465.     char *adpcm:(AD)PCMデータアドレス
  466.  
  467. 戻り値    0:正常終了
  468.     0以外:エラーコード
  469.  
  470. 備考    char *adpcmで表されるアドレスからの領域の存在は、演奏中も
  471.     保証されなければならない。
  472. *-----------------------------------------------------------------------------
  473.     int    zm_se_adpcm2(char data_type,char volume,char frq,char pan,
  474.             int data_number,short priority,short ch);
  475.  
  476. 機能    ZMUSICに登録してある(AD)PCM効果音の演奏
  477.  
  478. 引数    char data_type:データタイプ(-1:ADPCM,1:16bitPCM,2:8bitPCM)
  479.     char volume:音量(0-127,64:標準)
  480.     char frq:再生周波数(0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz)
  481.     char pan:パンポット(0-3 / $80+0-127)
  482.     int data_number:PCMデータ番号(d15が1ならば音色番号($8000+0-32767),
  483.                       0ならばノート番号(0-32767)指定)
  484.     short priority:効果音優先度(0-255/0が最も低い)
  485.     short ch:再生チャンネル(0-15)
  486.  
  487. 戻り値    0:正常終了
  488.     0以外:エラーコード
  489. *-----------------------------------------------------------------------------
  490.     void    zm_intercept_play( int mode );
  491.  
  492. 機能    演奏開始制御の遮断制御
  493.  
  494. 引数    int mode:-1 演奏開始の遮断を行う
  495.          0  演奏開始の遮断の解除と演奏開始
  496.          1  演奏開始の遮断の解除
  497.  
  498. 戻り値    なし
  499.  
  500. 備考    演奏開始の遮断を設定するとzm_play()などの演奏開始命令を実行しても
  501.     演奏が開始されなくなる。
  502. *-----------------------------------------------------------------------------
  503.     int    zm_current_midi_in( int port );
  504.  
  505. 機能    カレントMIDI-IN端子の設定
  506.  
  507. 引数    int port:MIDIポートの番号(0-3)
  508.          -1では問い合わせのみを行う
  509.  
  510. 戻り値    以前のカレントMIDI-INのポート番号(0-3)
  511. *-----------------------------------------------------------------------------
  512.     int    zm_current_midi_out( int port );
  513.  
  514. 機能    カレントMIDI-OUT端子の設定
  515.  
  516. 引数    int port:MIDIポートの番号(0-3)
  517.          -1では問い合わせのみを行う
  518.  
  519. 戻り値    以前のカレントMIDI-OUTのポート番号(0-3)
  520. *-----------------------------------------------------------------------------
  521.     int    zm_midi_transmission( int port,int size,char *midi );
  522.  
  523. 機能    MIDIデータメッセージの送信
  524.  
  525. 引数    int port:MIDIポートの番号(0-3)
  526.          -1はカレントMIDI-OUTを使用
  527.     int size:送信データサイズ
  528.          0とした場合はテキスト型MIDIデータ(MDD)とみなして送信する
  529.          0以外ではバイナリデータとみなして送信する
  530.     char *midi:送信するMIDIデータを格納したデータバッファ
  531.  
  532. 戻り値    送信データの8ビット加算合計値
  533.  
  534. 備考    MDDとはZMUSIC Ver.2.0相当でMIDIファイルの標準としていたフォーマット。
  535.     $0d,$0aで始まり16進数のテキストでMIDIメッセージを記述したファイル。
  536.     送信データサイズを指定した場合はバイナリのMIDIメッセージと
  537.     みなして送信される。ZMUSICが扱えるバイナリのMIDIメッセージには
  538.     スタンダードMIDIファイル(FORMAT0)と単なるバイナリデータ列の
  539.     2種類がありこのデータの種類の判別はZMUSIC Ver.3.0が自動で行う。
  540. *-----------------------------------------------------------------------------
  541.     void    zm_exclusive( int port,int size,int id,char *midi );
  542.  
  543. 機能    エクスクルーシブメッセージの送信
  544.  
  545. 引数    int port:MIDIポートの番号(0-3)
  546.          -1はカレントMIDI-OUTを使用
  547.     int size:送信データサイズ
  548.     int id:d0-d7=MODEL ID(0-127)
  549.           d8-d15=DEVICE ID(0-127)
  550.          d16-d23=MAKER ID(0-127) 
  551.     char *midi:送信するMIDIデータを格納したデータバッファ
  552.  
  553. 戻り値    なし
  554.  
  555. 備考    エクスクルーシブヘッダの$F0とEOXの$F7は自動送信される。
  556.     DEVICE IDを-1とすると以前設定したものが選択される。最初の使用時に
  557.     省略した場合はドライバ内のデフォルト値が選択される。
  558.     MAKER IDをRoland($41)とした場合はデータ列をローランド・エクスクルーシブ
  559.     フォーマットのデータとみなし、コマンドメッセージ(DT2:$12)やチェックサム
  560.     バイト付きで送信する。
  561.     MAKER IDをYAMAHA($43)とした場合はデータ列をヤマハ・エクスクルーシブ
  562.     フォーマットのデータとみなし、データ長やチェックサムバイト付きで送信す
  563.     る。
  564. *-----------------------------------------------------------------------------
  565.     int    zm_set_eox_wait( int port,int wait );
  566.  
  567. 機能    EOX送信後のウェイトを設定する
  568.  
  569. 引数    int port:MIDIポートの番号(0-2)
  570.          -1はカレントMIDI-OUTを使用
  571.     int wait:0-65535
  572.  
  573. 戻り値    それまでのウェイト値
  574. *-----------------------------------------------------------------------------
  575.     int    zm_midi_inp1( int port,int mode );
  576.  
  577. 機能    MIDIデータの1バイト入力
  578.  
  579. 引数    int port:MIDIポートの番号(0-3)
  580.          -1はカレントMIDI-OUTを使用
  581.     int mode:0 1回受信を試みてすぐ帰還
  582.          1 受信するまで無限ループ
  583.  
  584. 戻り値    d31=1    読みこぼし発生    0:正常読みだし
  585.     d15=1    データ無し    0:データ有り
  586.     d0-d7    読みだしデータ
  587. *-----------------------------------------------------------------------------
  588.     int    zm_midi_out1( int port,char data );
  589.  
  590. 機能    MIDIデータの1バイト出力
  591.  
  592. 引数    int port:MIDIポートの番号(0-3)
  593.          -1はカレントMIDI-OUTを使用
  594.     char data:送信データ(0-255)
  595.  
  596. 戻り値    0:正常終了
  597.     0以外:エラーコード
  598. *-----------------------------------------------------------------------------
  599.     int    zm_midi_rec( int port );
  600.  
  601. 機能    MIDIデータのレコーディング開始
  602.  
  603. 引数    int port:MIDIポートの番号(0-3)
  604.          -1はカレントMIDI-OUTを使用
  605.  
  606. 戻り値    0:正常終了
  607.     0以外:エラーコード
  608. *-----------------------------------------------------------------------------
  609.     int    zm_midi_rec_end( int port );
  610.  
  611. 機能    MIDIデータのレコーディング終了
  612.  
  613. 引数    int port:MIDIポートの番号(0-3)
  614.          -1はカレントMIDI-OUTを使用
  615.  
  616. 戻り値    0:正常終了
  617.     0以外:エラーコード
  618. *-----------------------------------------------------------------------------
  619.     int    zm_gs_reset( int port,int id );
  620.  
  621. 機能    GS音源の初期化
  622.  
  623. 引数    int port:MIDIポートの番号(0-3)
  624.          -1はカレントMIDI-OUTを使用
  625.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  626.  
  627. 戻り値    0:正常終了
  628.     0以外:エラーコード
  629. *-----------------------------------------------------------------------------
  630.     int    zm_gs_partial_reserve( int port,int id,char *rsv );
  631.  
  632. 機能    GS音源のパーシャルリザーブ
  633.  
  634. 引数    int port:MIDIポートの番号(0-3)
  635.          -1はカレントMIDI-OUTを使用
  636.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  637.     char *rsv:パート1~パート16までのパーシャルリザーブ値が
  638.           格納されているアドレス
  639.  
  640. 戻り値    0:正常終了
  641.     0以外:エラーコード
  642.  
  643. 備考    char *rsvからの領域にパーシャルリザーブ値を16パート分格納しておく。
  644.     また、合計が楽器の最大同時発声数以下にならなければならない。
  645.     rsv[0]=パート1,rsv[1]=パート2…,rsv[15]=パート16というふうに対応する。
  646.     なお、パート10はリズムパートに対応する。
  647.     idを-1とすると以前設定したものが選択される。最初の使用時に
  648.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  649. *-----------------------------------------------------------------------------
  650.     int    zm_gs_reverb( int port,int size,int id,char *rvb );
  651.  
  652. 機能    GS音源のリバーブ・パラメータの設定
  653.  
  654. 引数    int port:MIDIポートの番号(0-3)
  655.          -1はカレントMIDI-OUTを使用
  656.     int size:リバーブパラメータ・データサイズ(1-7)
  657.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  658.     char *rvb:リバーブパラメータ格納バッファ
  659.  
  660. 戻り値    0:正常終了
  661.     0以外:エラーコード
  662.  
  663. 備考    char *rvbからの領域にリバーブパラメータを記述しておく。sizeは7以内で、
  664.     指定したsize個分のパラメータがGS音源へ送信される。
  665.     idを-1とすると以前設定したものが選択される。最初の使用時に
  666.     省略した場合はZMUSIC内のデフォルト値$10が選択される
  667.  
  668.     rvb[0]:REVERB MACRO 00:Room1,01:Room2,02:Room3,03:Hall1,04:Hall2
  669.                 05:Plate,06:Delay,07:Panning Delay(FB)
  670.     rvb[1]:REVERB CHARACTER            ($00~$07)
  671.     rvb[2]:REVERB PRE-LPF            ($00~$07)
  672.     rvb[3]:REVERB LEVEL            ($00~$7F)
  673.     rvb[4]:REVERB TIME            ($00~$7F)
  674.     rvb[5]:REVERB DELAY FEEDBACK        ($00~$7F)
  675.     rvb[6]:REVERB SEND LEVEL TO CHORUS    ($00~$7F)
  676.     (SC55マニュアルp79参照)
  677. *-----------------------------------------------------------------------------
  678.     int    zm_gs_chorus( int port,int size,int id,char *cho );
  679.  
  680. 機能    GS音源のコーラス・パラメータの設定
  681.  
  682. 引数    int port:MIDIポートの番号(0-3)
  683.          -1はカレントMIDI-OUTを使用
  684.     int size:コーラスパラメータ・データサイズ(1-8)
  685.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  686.     char *cho:コーラスパラメータ格納バッファ
  687.  
  688. 戻り値    0:正常終了
  689.     0以外:エラーコード
  690.  
  691. 備考    char *choからの領域にコーラスパラメータを記述しておく。sizeは8以内で
  692.     指定したsize個分のパラメータがGS音源へ送信される。
  693.     idを-1とすると以前設定したものが選択される。最初の使用時に
  694.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  695.  
  696.     cho[0]:CHORUS MACRO 00:Chorus1,01:Chorus2,02:Chorus3,03:Chorus4
  697.                 04:Feedback Chorus,05:Flanger,06:Short Delay
  698.                 07:Short Delay(FB)
  699.     cho[1]:CHORUS PRE-LPF            ($00~$07)
  700.     cho[2]:CHORUS LEVEL            ($00~$7F)
  701.     cho[3]:CHORUS FEEDBACK            ($00~$7F)
  702.     cho[4]:CHORUS DELAY            ($00~$7F)
  703.     cho[5]:CHORUS RATE            ($00~$7F)
  704.     cho[6]:CHORUS DEPTH            ($00~$7F)
  705.     cho[7]:CHORUS SEND LEVEL TO REVERB    ($00~$7F)
  706.     (SC55マニュアルp79参照)
  707. *-----------------------------------------------------------------------------
  708.     int    zm_gs_part_parameter( int port,int size,int pt_id,char *param );
  709.  
  710. 機能    GS音源のパート・パラメータの設定
  711.  
  712. 引数    int port:MIDIポートの番号(0-3)
  713.          -1はカレントMIDI-OUTを使用
  714.     int size:パートパラメータ・データサイズ(1-119)
  715.     int pt_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  716.               d16-d31=PART NUMBER(1-16)
  717.     char *param:パートパラメータ格納バッファ
  718.  
  719. 戻り値    0:正常終了
  720.     0以外:エラーコード
  721.  
  722. 備考    char *paramからの領域にパートパラメータを記述しておく。sizeは119以内で
  723.     指定したsize個分のパラメータがGS音源へ送信される。
  724.     pt_idのd0-d15を-1とすると以前設定したものが選択される。最初の使用時に
  725.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  726.  
  727.     param[0]:Rx CHANNEL                 (1~16,17=OFF)
  728.     param[1]:Rx PITCH BEND              (0~1:OFF/ON)
  729.     param[2]:Rx CH PRESSURE(CAf)        (0~1:OFF/ON)
  730.     param[3]:Rx PROGRAM CHANGE          (0~1:OFF/ON)
  731.     param[4]:Rx CONTROL CHANGE          (0~1:OFF/ON)
  732.     param[5]:Rx POLY PRESSURE(PAf)      (0~1:OFF/ON)
  733.     param[6]:Rx NOTE MESSAGE            (0~1:OFF/ON)
  734.     param[7]:Rx RPN                     (0~1:OFF/ON)
  735.     param[8]:Rx NRPN                    (0~1:OFF/ON)
  736.     param[9]:Rx MODURATION              (0~1:OFF/ON)
  737.     param[10]:Rx VOLUME                  (0~1:OFF/ON)
  738.     param[11]:Rx PANPOT                  (0~1:OFF/ON)
  739.     param[12]:Rx EXPRESSION              (0~1:OFF/ON)
  740.     param[13]:Rx HOLD1                   (0~1:OFF/ON)
  741.     param[14]:Rx PORTAMENTO              (0~1:OFF/ON)
  742.     param[15]:Rx SOSTENUTO               (0~1:OFF/ON)
  743.     param[16]:Rx SOFT                    (0~1:OFF/ON)
  744.     param[17]:MONO/POLY MODE             (0~1:MONO/POLY)
  745.     param[18]:ASSIGN MODE                (0:SINGLE,1:LIMITED-MULTI,2:FULL-MULTI)
  746.     param[19]:USE FOR RHYTHM PART        (0:OFF,1:MAP1,2:MAP2)
  747.     param[20]:PITCH KEY SHIFT            ($28~$58:-24~+24[semitone])
  748.     param[21]:PITCH OFFSET FINE(upper)   ($08~$F8:-12.0~+12.0[Hz])
  749.     param[22]:PITCH OFFSET FINE(lower)         〃
  750.     param[23]:PART LEVEL                 (0~127)
  751.     param[24]:VELOCITY SENSE DEPTH       (0~127)
  752.     param[25]:VELOCITY SENSE OFFSET      (0~127)
  753.     param[26]:PART PANPOT                (0:RANDOM,01(LEFT)~64~127(RIGHT))
  754.     param[27]:KEY RANGE LOW              (0~127:C-1~G9)
  755.     param[28]:KEY RANGE HIGH             (0~127:C-1~G9)
  756.     param[29]:CC1 CONTROL NUMBER         (0~127)
  757.     param[30]:CC2 CONTROL NUMBER         (0~127)
  758.     param[31]:CHORUS SEND DEPTH          (0~127)
  759.     param[32]:REVERB SEND DEPTH          (0~127)
  760.  
  761.     param[33]:Vibrato rate               ($0E~$72:-50~+50)
  762.     param[34]:Vibrato depth              ($0E~$72:-50~+50)
  763.     param[35]:TVF cutoff freq.           ($0E~$50:-50~+16)
  764.     param[36]:TVF resonance              ($0E~$72:-50~+50)
  765.     param[37]:TVF&TVA Env.attack         ($0E~$72:-50~+50)
  766.     param[38]:TVF&TVA Env.decay          ($0E~$72:-50~+50)
  767.     param[39]:TVF&TVA Env.release        ($0E~$72:-50~+50)
  768.     param[40]:Vibrato delay              ($0E~$72:-50~+50)
  769.  
  770.     param[41]:SCALE TUNING C           ($00~$7F:-64~+63[cent])
  771.     param[42]:SCALE TUNING C#           ($00~$7F:-64~+63[cent])
  772.     param[43]:SCALE TUNING D           ($00~$7F:-64~+63[cent])
  773.     param[44]:SCALE TUNING D#           ($00~$7F:-64~+63[cent])
  774.     param[45]:SCALE TUNING E           ($00~$7F:-64~+63[cent])
  775.     param[46]:SCALE TUNING F           ($00~$7F:-64~+63[cent])
  776.     param[47]:SCALE TUNING F#           ($00~$7F:-64~+63[cent])
  777.     param[48]:SCALE TUNING G           ($00~$7F:-64~+63[cent])
  778.     param[49]:SCALE TUNING G#           ($00~$7F:-64~+63[cent])
  779.     param[50]:SCALE TUNING A           ($00~$7F:-64~+63[cent])
  780.     param[51]:SCALE TUNING A#           ($00~$7F:-64~+63[cent])
  781.     param[52]:SCALE TUNING B           ($00~$7F:-64~+63[cent])
  782.  
  783.     param[53]:MOD PITCH CONTROL       ($28~$58:-24~+24[semitone])
  784.     param[54]:MOD TVF CUTOFF CONTROL       ($00~$7F:-9600~+9600[CENT])
  785.     param[55]:MOD AMPLITUDE CONTROL       ($00~$7F:-100.0~+100.0[%])
  786.     param[56]:MOD LFO1 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  787.     param[57]:MOD LFO1 PITCH DEPTH       ($00~$7F:0~600[cent])
  788.     param[58]:MOD LFO1 TVF DEPTH       ($00~$7F:0~2400[cent])
  789.     param[59]:MOD LFO1 TVA DEPTH       ($00~$7F:0~100.0[%])
  790.     param[60]:MOD LFO2 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  791.     param[61]:MOD LFO2 PITCH DEPTH       ($00~$7F:0~600[cent])
  792.     param[62]:MOD LFO2 TVF DEPTH       ($00~$7F:0~2400[cent])
  793.     param[63]:MOD LFO2 TVA DEPTH       ($00~$7F:0~100.0[%])
  794.  
  795.     param[64]:BEND PITCH CONTROL       ($28~$58:-24~+24[semitone])
  796.     param[65]:BEND TVF CUTOFF CONTROL       ($00~$7F:-9600~+9600[CENT])
  797.     param[66]:BEND AMPLITUDE CONTROL       ($00~$7F:-100.0~+100.0[%])
  798.     param[67]:BEND LFO1 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  799.     param[68]:BEND LFO1 PITCH DEPTH       ($00~$7F:0~600[cent])
  800.     param[69]:BEND LFO1 TVF DEPTH       ($00~$7F:0~2400[cent])
  801.     param[70]:BEND LFO1 TVA DEPTH       ($00~$7F:0~100.0[%])
  802.     param[71]:BEND LFO2 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  803.     param[72]:BEND LFO2 PITCH DEPTH       ($00~$7F:0~600[cent])
  804.     param[73]:BEND LFO2 TVF DEPTH       ($00~$7F:0~2400[cent])
  805.     param[74]:BEND LFO2 TVA DEPTH       ($00~$7F:0~100.0[%])
  806.  
  807.     param[75]:CAf PITCH CONTROL       ($28~$58:-24~+24[semitone])
  808.     param[76]:CAf TVF CUTOFF CONTROL       ($00~$7F:-9600~+9600[CENT])
  809.     param[77]:CAf AMPLITUDE CONTROL       ($00~$7F:-100.0~+100.0[%])
  810.     param[78]:CAf LFO1 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  811.     param[79]:CAf LFO1 PITCH DEPTH       ($00~$7F:0~600[cent])
  812.     param[80]:CAf LFO1 TVF DEPTH       ($00~$7F:0~2400[cent])
  813.     param[81]:CAf LFO1 TVA DEPTH       ($00~$7F:0~100.0[%])
  814.     param[82]:CAf LFO2 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  815.     param[83]:CAf LFO2 PITCH DEPTH       ($00~$7F:0~600[cent])
  816.     param[84]:CAf LFO2 TVF DEPTH       ($00~$7F:0~2400[cent])
  817.     param[85]:CAf LFO2 TVA DEPTH       ($00~$7F:0~100.0[%])
  818.  
  819.     param[86]:PAf PITCH CONTROL       ($28~$58:-24~+24[semitone])
  820.     param[87]:PAf TVF CUTOFF CONTROL       ($00~$7F:-9600~+9600[CENT])
  821.     param[88]:PAf AMPLITUDE CONTROL       ($00~$7F:-100.0~+100.0[%])
  822.     param[89]:PAf LFO1 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  823.     param[90]:PAf LFO1 PITCH DEPTH       ($00~$7F:0~600[cent])
  824.     param[91]:PAf LFO1 TVF DEPTH       ($00~$7F:0~2400[cent])
  825.     param[92]:PAf LFO1 TVA DEPTH       ($00~$7F:0~100.0[%])
  826.     param[93]:PAf LFO2 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  827.     param[94]:PAf LFO2 PITCH DEPTH       ($00~$7F:0~600[cent])
  828.     param[95]:PAf LFO2 TVF DEPTH       ($00~$7F:0~2400[cent])
  829.     param[96]:PAf LFO2 TVA DEPTH       ($00~$7F:0~100.0[%])
  830.  
  831.     param[97]:CC1 PITCH CONTROL       ($28~$58:-24~+24[semitone])
  832.     param[98]:CC1 TVF CUTOFF CONTROL       ($00~$7F:-9600~+9600[CENT])
  833.     param[99]:CC1 AMPLITUDE CONTROL       ($00~$7F:-100.0~+100.0[%])
  834.        param[100]:CC1 LFO1 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  835.        param[101]:CC1 LFO1 PITCH DEPTH       ($00~$7F:0~600[cent])
  836.        param[102]:CC1 LFO1 TVF DEPTH       ($00~$7F:0~2400[cent])
  837.        param[103]:CC1 LFO1 TVA DEPTH       ($00~$7F:0~100.0[%])
  838.        param[104]:CC1 LFO2 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  839.        param[105]:CC1 LFO2 PITCH DEPTH       ($00~$7F:0~600[cent])
  840.        param[106]:CC1 LFO2 TVF DEPTH       ($00~$7F:0~2400[cent])
  841.        param[107]:CC1 LFO2 TVA DEPTH       ($00~$7F:0~100.0[%])
  842.  
  843.        param[108]:CC2 PITCH CONTROL       ($28~$58:-24~+24[semitone])
  844.        param[109]:CC2 TVF CUTOFF CONTROL       ($00~$7F:-9600~+9600[CENT])
  845.        param[110]:CC2 AMPLITUDE CONTROL       ($00~$7F:-100.0~+100.0[%])
  846.        param[111]:CC2 LFO1 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  847.        param[112]:CC2 LFO1 PITCH DEPTH       ($00~$7F:0~600[cent])
  848.        param[113]:CC2 LFO1 TVF DEPTH       ($00~$7F:0~2400[cent])
  849.        param[114]:CC2 LFO1 TVA DEPTH       ($00~$7F:0~100.0[%])
  850.        param[115]:CC2 LFO2 RATE CONTROL       ($00~$7F:-10.0~+10.0[Hz])
  851.        param[116]:CC2 LFO2 PITCH DEPTH       ($00~$7F:0~600[cent])
  852.        param[117]:CC2 LFO2 TVF DEPTH       ($00~$7F:0~2400[cent])
  853.        param[118]:CC2 LFO2 TVA DEPTH       ($00~$7F:0~100.0[%])
  854.        (SC55のマニュアルp75,p79~p80参照)
  855. *-----------------------------------------------------------------------------
  856.     int    zm_gs_drum_setup( int port,int size,int dr_id,char *param );
  857.  
  858. 機能    GS音源のドラム・セットアップ設定
  859.  
  860. 引数    int port:MIDIポートの番号(0-3)
  861.          -1はカレントMIDI-OUTを使用
  862.     int size:ドラム・セットアップ・パラメータ・データサイズ(1-8)
  863.     int dr_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  864.               d16-d23=NOTE NUMBER(0-127)
  865.               d24-d31=MAP NUMBER(0-1)
  866.     char *param:ドラム・セットアップ・パラメータ格納バッファ
  867.  
  868. 戻り値    0:正常終了
  869.     0以外:エラーコード
  870.  
  871. 備考    char *paramからの領域にドラム・セットアップ・パラメータを記述しておく。
  872.     sizeは8以内で指定したsize個分のパラメータがGS音源へ送信される。
  873.     idを-1とすると以前設定したものが選択される。最初の使用時に
  874.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  875.  
  876.     param[0]:PLAY KEY NUMBER            (0~127)
  877.     param[1]:LEVEL                      (0~127)
  878.     param[2]:ASSIGN GROUP NUMBER        (0:NON,1~127)
  879.     param[3]:PANPOT                     (0:RANDOM,01(LEFT)~64~127(RIGHT))
  880.     param[4]:REVERB DEPTH               (0~127:0.0~1.0)
  881.     param[5]:CHORUS DEPTH               (0~127:0.0~1.0)
  882.     param[6]:Rx NOTE OFF                (0~1:OFF/ON)
  883.     param[7]:Rx NOTE ON                 (0~1:OFF/ON)
  884.     (SC55マニュアルp75,p82参照)
  885. *-----------------------------------------------------------------------------
  886.     int    zm_gs_drum_name( int port,int size,int mp_id,char *name );
  887.  
  888. 機能    GS音源のドラム・セット名設定
  889.  
  890. 引数    int port:MIDIポートの番号(0-3)
  891.          -1はカレントMIDI-OUTを使用
  892.     int size:ドラム・セットアップ・パラメータ・データサイズ(1-8)
  893.     int mp_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  894.               d16-d31=MAP NUMBER(0,1)
  895.     char *name:ドラム・セット名文字列格納バッファ
  896.  
  897. 戻り値    0:正常終了
  898.     0以外:エラーコード
  899.  
  900. 備考    文字列は12文字以内でchar *nameからの領域に文字列を記述しておく。
  901.     idを-1とすると以前設定したものが選択される。最初の使用時に
  902.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  903.     (SC55マニュアルp82参照)
  904. *-----------------------------------------------------------------------------
  905.     int    zm_gs_print( int port,int size,int id,char *mes );
  906.  
  907. 機能    GS音源の画面へのメッセージ出力
  908.  
  909. 引数    int port:MIDIポートの番号(0-3)
  910.          -1はカレントMIDI-OUTを使用
  911.     int size:メッセージ長(1-32)
  912.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  913.     char *mes:文字列格納バッファ
  914.  
  915. 戻り値    0:正常終了
  916.     0以外:エラーコード
  917.  
  918. 備考    メッセージは32文字以内でchar *mesからの領域に文字列を記述しておく。
  919.     idを-1とすると以前設定したものが選択される。最初の使用時に
  920.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  921. *-----------------------------------------------------------------------------
  922.     int    zm_gs_display( int port,int id,short *pattern );
  923.  
  924. 機能    GS音源の画面へのドットパターン出力
  925.  
  926. 引数    int port:MIDIポートの番号(0-3)
  927.          -1はカレントMIDI-OUTを使用
  928.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  929.     short *pattern:ドットパターン格納バッファ
  930.  
  931. 戻り値    0:正常終了
  932.     0以外:エラーコード
  933.  
  934. 備考    short *patternからの領域にドットパターンを記述しておく。
  935.     idを-1とすると以前設定したものが選択される。最初の使用時に
  936.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  937.  
  938.       /*SC55の画面に"善"を表示する*/
  939.       short d[16]={    %0001000000010000,
  940.                       %0000100000100000,
  941.                       %0111111111111100,
  942.                         %0000000100000000,
  943.                         %0011111111111000,
  944.                         %0000000100000000,
  945.                         %0111111111111100,
  946.                         %0001000100010000,
  947.                         %0000100100100000,
  948.                         %1111111111111110,
  949.                         %0000000000000000,
  950.                         %0011111111111000,
  951.                         %0010000000001000,
  952.                         %0010000000001000,
  953.                         %0011111111111000,
  954.                         %0010000000001000}
  955.         gs_display(-1,-1,d);
  956. *-----------------------------------------------------------------------------
  957.     int    zm_gm_system_on( int port );
  958.  
  959. 機能    GM音源のリセット
  960.  
  961. 引数    int port:MIDIポートの番号(0-3)
  962.          -1はカレントMIDI-OUTを使用
  963.  
  964. 戻り値    0:正常終了
  965.     0以外:エラーコード
  966. *-----------------------------------------------------------------------------
  967.     int    zm_sc88_mode_set( int port,int md_id );
  968.  
  969. 機能    SC88モード設定
  970.  
  971. 引数    int port:MIDIポートの番号(0-3)
  972.          -1はカレントMIDI-OUTを使用
  973.     int md_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  974.           d16-d31=SC88 MODE(0:Single, 1:Double)
  975.  
  976. 戻り値    0:正常終了
  977.     0以外:エラーコード
  978.  
  979. 備考    idを-1とすると以前設定したものが選択される。最初の使用時に
  980.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  981. *-----------------------------------------------------------------------------
  982.     int    zm_sc88_reverb( int port,int size,int id,char *rvb );
  983.  
  984. 機能    SC88のリバーブ・パラメータの設定
  985.  
  986. 引数    int port:MIDIポートの番号(0-3)
  987.          -1はカレントMIDI-OUTを使用
  988.     int size:リバーブパラメータ・データサイズ(1-8)
  989.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  990.     char *rvb:リバーブパラメータ格納バッファ
  991.  
  992. 戻り値    0:正常終了
  993.     0以外:エラーコード
  994.  
  995. 備考    char *rvbからの領域にリバーブパラメータを記述しておく。sizeは8以内で、
  996.     指定したsize個分のパラメータがSC88へ送信される。
  997.     idを-1とすると以前設定したものが選択される。最初の使用時に
  998.     省略した場合はZMUSIC内のデフォルト値$10が選択される
  999.  
  1000.     rvb[0]:REVERB MACRO 00:Room1,01:Room2,02:Room3,03:Hall1,04:Hall2
  1001.                 05:Plate,06:Delay,07:Panning Delay(FB)
  1002.     rvb[1]:REVERB CHARACTER            ($00~$07)
  1003.     rvb[2]:REVERB PRE-LPF            ($00~$07)
  1004.     rvb[3]:REVERB LEVEL            ($00~$7F)
  1005.     rvb[4]:REVERB TIME            ($00~$7F)
  1006.     rvb[5]:REVERB DELAY FEEDBACK        ($00~$7F)
  1007.     rvb[6]:REVERB SEND LEVEL TO CHORUS    ($00~$7F/SC88ではダミー)
  1008.     rvb[7]:REVERB PRE-DELAY TIME        ($00~$7F)
  1009.     (SC88マニュアルp77参照)
  1010. *-----------------------------------------------------------------------------
  1011.     int    zm_sc88_chorus( int port,int size,int id,char *cho );
  1012.  
  1013. 機能    SC88のコーラス・パラメータの設定
  1014.  
  1015. 引数    int port:MIDIポートの番号(0-3)
  1016.          -1はカレントMIDI-OUTを使用
  1017.     int size:コーラスパラメータ・データサイズ(1-9)
  1018.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  1019.     char *cho:コーラスパラメータ格納バッファ
  1020.  
  1021. 戻り値    0:正常終了
  1022.     0以外:エラーコード
  1023.  
  1024. 備考    char *choからの領域にコーラスパラメータを記述しておく。sizeは9以内で
  1025.     指定したsize個分のパラメータがSC88へ送信される。
  1026.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1027.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1028.  
  1029.     cho[0]:CHORUS MACRO 00:Chorus1,01:Chorus2,02:Chorus3,03:Chorus4
  1030.                 04:Feedback Chorus,05:Flanger,06:Short Delay
  1031.                 07:Short Delay(FB)
  1032.     cho[1]:CHORUS PRE-LPF            ($00~$07)
  1033.     cho[2]:CHORUS LEVEL            ($00~$7F)
  1034.     cho[3]:CHORUS FEEDBACK            ($00~$7F)
  1035.     cho[4]:CHORUS DELAY            ($00~$7F)
  1036.     cho[5]:CHORUS RATE            ($00~$7F)
  1037.     cho[6]:CHORUS DEPTH            ($00~$7F)
  1038.     cho[7]:CHORUS SEND LEVEL TO REVERB    ($00~$7F)
  1039.     cho[8]:CHORUS SEND LEVEL TO DELAY    ($00~$7F)
  1040.     (SC88マニュアルp78参照)
  1041. *-----------------------------------------------------------------------------
  1042.     int    zm_sc88_delay( int port,int size,int id,char *dly );
  1043.  
  1044. 機能    SC88のディレイ・パラメータの設定
  1045.  
  1046. 引数    int port:MIDIポートの番号(0-3)
  1047.          -1はカレントMIDI-OUTを使用
  1048.     int size:ディレイパラメータ・データサイズ(1-11)
  1049.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  1050.     char *dly:ディレイパラメータ格納バッファ
  1051.  
  1052. 戻り値    0:正常終了
  1053.     0以外:エラーコード
  1054.  
  1055. 備考    char *dlyからの領域にリバーブパラメータを記述しておく。sizeは11以内で、
  1056.     指定したsize個分のパラメータがSC88へ送信される。
  1057.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1058.     省略した場合はZMUSIC内のデフォルト値$10が選択される
  1059.  
  1060.     dly[0]:DELAY MACRO 00:Delay1,01:Delay2,02:Delay3,03:Delay4,04:Pan Delay1
  1061.                05:Pan Delay2,06:Pan Delay3,07:Pan Delay4
  1062.                08:Delay to Reverb,09:Pan Repeat
  1063.     dly[1]:DELAY PRE-LPF            ($00~$07)
  1064.     dly[2]:DELAY TIME CENTER        ($01~$73:0.1ms~sec)
  1065.     dly[3]:DELAY TIME RATIO LEFT        ($01~$78:4~500%)
  1066.     dly[4]:DELAY TIME RATIO RIGHT        ($01~$78:4~500%)
  1067.     dly[5]:DELAY LEVEL CENTER        ($00~$7F)
  1068.     dly[6]:DELAY LEVEL LEFT            ($00~$7F)
  1069.     dly[7]:DELAY LEVEL RIGHT        ($00~$7F)
  1070.     dly[8]:DELAY LEVEL            ($00~$7F)
  1071.     dly[9]:DELAY FEEDBACK            ($00~$7F:-64~+63)
  1072.     dly[10]:DELAY SENDLEVEL TO REVERB    ($00~$7F)
  1073.     (SC88マニュアルp78参照)
  1074. *-----------------------------------------------------------------------------
  1075.     int    zm_sc88_equalizer( int port,int size,int id,char *eql );
  1076.  
  1077. 機能    SC88のイコライザ・パラメータの設定
  1078.  
  1079. 引数    int port:MIDIポートの番号(0-3)
  1080.          -1はカレントMIDI-OUTを使用
  1081.     int size:イコライザパラメータ・データサイズ(1-4)
  1082.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  1083.     char *eql:イコライザパラメータ格納バッファ
  1084.  
  1085. 戻り値    0:正常終了
  1086.     0以外:エラーコード
  1087.  
  1088. 備考    char *eqlからの領域にコーラスパラメータを記述しておく。sizeは4以内で
  1089.     指定したsize個分のパラメータがSC88へ送信される。
  1090.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1091.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1092.  
  1093.     eql[0]:EQ LOW FREQ            (0,1:200Hz,400Hz)
  1094.     eql[1]:EQ LOW GAIN            ($34~$4c:-12~+12dB)
  1095.     eql[2]:EQ HIGH FREQ            (0,1:3kHz,6kHz)
  1096.     eql[3]:EQ HIGH GAIN            ($34~$4c:-12~+12dB)
  1097.     (SC88マニュアルp78参照)
  1098. *-----------------------------------------------------------------------------
  1099.     int    zm_sc88_part_parameter( int port,int size,int pt_id,char *param );
  1100.  
  1101. 機能    SC88のパート・パラメータの設定
  1102.  
  1103. 引数    int port:MIDIポートの番号(0-3)
  1104.          -1はカレントMIDI-OUTを使用
  1105.     int size:パートパラメータ・データサイズ(1-127)
  1106.     int pt_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1107.               d16-d31=PART NUMBER(1-16)
  1108.     char *param:パートパラメータ格納バッファ
  1109.  
  1110. 戻り値    0:正常終了
  1111.     0以外:エラーコード
  1112.  
  1113. 備考    char *paramからの領域にパートパラメータを記述しておく。sizeは127以内で
  1114.     指定したsize個分のパラメータがSC88へ送信される。
  1115.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1116.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1117.  
  1118.     param[0]:Rx CHANNEL                  (1~16,17=OFF)
  1119.     param[1]:Rx PITCH BEND               (0~1:OFF/ON)
  1120.     param[2]:Rx CH PRESSURE(CAf)         (0~1:OFF/ON)
  1121.     param[3]:Rx PROGRAM CHANGE           (0~1:OFF/ON)
  1122.     param[4]:Rx CONTROL CHANGE           (0~1:OFF/ON)
  1123.     param[5]:Rx POLY PRESSURE(PAf)       (0~1:OFF/ON)
  1124.     param[6]:Rx NOTE MESSAGE             (0~1:OFF/ON)
  1125.     param[7]:Rx RPN                      (0~1:OFF/ON)
  1126.     param[8]:Rx NRPN                     (0~1:OFF/ON)
  1127.     param[9]:Rx MODURATION               (0~1:OFF/ON)
  1128.     param[10]:Rx VOLUME                  (0~1:OFF/ON)
  1129.     param[11]:Rx PANPOT                  (0~1:OFF/ON)
  1130.     param[12]:Rx EXPRESSION              (0~1:OFF/ON)
  1131.     param[13]:Rx HOLD1                   (0~1:OFF/ON)
  1132.     param[14]:Rx PORTAMENTO              (0~1:OFF/ON)
  1133.     param[15]:Rx SOSTENUTO               (0~1:OFF/ON)
  1134.     param[16]:Rx SOFT                    (0~1:OFF/ON)
  1135.     param[17]:MONO/POLY MODE             (0~1:MONO/POLY)
  1136.     param[18]:ASSIGN MODE                (0:SINGLE,1:LIMITED-MULTI,2:FULL-MULTI)
  1137.     param[19]:USE FOR RHYTHM PART        (0:OFF,1:MAP1,2:MAP2)
  1138.     param[20]:PITCH KEY SHIFT            ($28~$58:-24~+24[semitone])
  1139.     param[21]:PITCH OFFSET FINE(upper)   ($08~$F8:-12.0~+12.0[Hz])
  1140.     param[22]:PITCH OFFSET FINE(lower)         〃
  1141.     param[23]:PART LEVEL                 (0~127)
  1142.     param[24]:VELOCITY SENSE DEPTH       (0~127)
  1143.     param[25]:VELOCITY SENSE OFFSET      (0~127)
  1144.     param[26]:PART PANPOT                (0:RANDOM,01(LEFT)~64~127(RIGHT))
  1145.     param[27]:KEY RANGE LOW              (0~127:C-1~G9)
  1146.     param[28]:KEY RANGE HIGH             (0~127:C-1~G9)
  1147.     param[29]:CC1 CONTROL NUMBER         (0~127)
  1148.     param[30]:CC2 CONTROL NUMBER         (0~127)
  1149.     param[31]:CHORUS SEND LEVEL          (0~127)
  1150.     param[32]:REVERB SEND LEVEL          (0~127)
  1151.     param[33]:Rx BANK SELECT         (0:OFF,1:ON)
  1152.     param[34]:Rx BANK SELECT LSB         (0:OFF,1:ON)
  1153.  
  1154.     param[35]:PITCH FINE TUNE(Upper)     ($00 00~$40 00~$7f 7f:-100~0~+100)
  1155.     param[36]:PITCH FINE TUNE(Lower)
  1156.  
  1157.     param[37]:DELAY SEND LEVEL         (0~127)
  1158.  
  1159.     param[38]:Vibrato rate               ($00~$7f:-64~+63)
  1160.     param[39]:Vibrato depth              ($00~$7f:-64~+63)
  1161.     param[40]:TVF cutoff freq.           ($00~$7f:-64~+63)
  1162.     param[41]:TVF resonance              ($00~$7f:-64~+63)
  1163.     param[42]:TVF&TVA Env.attack         ($00~$7f:-64~+63)
  1164.     param[43]:TVF&TVA Env.decay          ($00~$7f:-64~+63)
  1165.     param[44]:TVF&TVA Env.release        ($00~$7f:-64~+63)
  1166.     param[45]:Vibrato delay              ($00~$7f:-64~+63)
  1167.  
  1168.     param[46]:SCALE TUNING C         ($00~$7F:-64~+63[cent])
  1169.     param[47]:SCALE TUNING C#         ($00~$7F:-64~+63[cent])
  1170.     param[48]:SCALE TUNING D         ($00~$7F:-64~+63[cent])
  1171.     param[49]:SCALE TUNING D#         ($00~$7F:-64~+63[cent])
  1172.     param[50]:SCALE TUNING E         ($00~$7F:-64~+63[cent])
  1173.     param[51]:SCALE TUNING F         ($00~$7F:-64~+63[cent])
  1174.     param[52]:SCALE TUNING F#         ($00~$7F:-64~+63[cent])
  1175.     param[53]:SCALE TUNING G         ($00~$7F:-64~+63[cent])
  1176.     param[54]:SCALE TUNING G#         ($00~$7F:-64~+63[cent])
  1177.     param[55]:SCALE TUNING A         ($00~$7F:-64~+63[cent])
  1178.     param[56]:SCALE TUNING A#         ($00~$7F:-64~+63[cent])
  1179.     param[57]:SCALE TUNING B         ($00~$7F:-64~+63[cent])
  1180.  
  1181.     param[58]:MOD PITCH CONTROL         ($28~$58:-24~+24[semitone])
  1182.     param[59]:MOD TVF CUTOFF CONTROL     ($00~$7F:-9600~+9600[CENT])
  1183.     param[60]:MOD AMPLITUDE CONTROL         ($00~$7F:-100.0~+100.0[%])
  1184.     param[61]:MOD LFO1 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1185.     param[62]:MOD LFO1 PITCH DEPTH         ($00~$7F:0~600[cent])
  1186.     param[63]:MOD LFO1 TVF DEPTH         ($00~$7F:0~2400[cent])
  1187.     param[64]:MOD LFO1 TVA DEPTH         ($00~$7F:0~100.0[%])
  1188.     param[65]:MOD LFO2 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1189.     param[66]:MOD LFO2 PITCH DEPTH         ($00~$7F:0~600[cent])
  1190.     param[67]:MOD LFO2 TVF DEPTH         ($00~$7F:0~2400[cent])
  1191.     param[68]:MOD LFO2 TVA DEPTH         ($00~$7F:0~100.0[%])
  1192.  
  1193.     param[69]:BEND PITCH CONTROL         ($40~$58:-24~+24[semitone])
  1194.     param[70]:BEND TVF CUTOFF CONTROL    ($00~$7F:-9600~+9600[CENT])
  1195.     param[71]:BEND AMPLITUDE CONTROL     ($00~$7F:-100.0~+100.0[%])
  1196.     param[72]:BEND LFO1 RATE CONTROL     ($00~$7F:-10.0~+10.0[Hz])
  1197.     param[73]:BEND LFO1 PITCH DEPTH         ($00~$7F:0~600[cent])
  1198.     param[74]:BEND LFO1 TVF DEPTH         ($00~$7F:0~2400[cent])
  1199.     param[75]:BEND LFO1 TVA DEPTH         ($00~$7F:0~100.0[%])
  1200.     param[76]:BEND LFO2 RATE CONTROL     ($00~$7F:-10.0~+10.0[Hz])
  1201.     param[77]:BEND LFO2 PITCH DEPTH         ($00~$7F:0~600[cent])
  1202.     param[78]:BEND LFO2 TVF DEPTH         ($00~$7F:0~2400[cent])
  1203.     param[79]:BEND LFO2 TVA DEPTH         ($00~$7F:0~100.0[%])
  1204.  
  1205.     param[80]:CAf PITCH CONTROL         ($28~$58:-24~+24[semitone])
  1206.     param[81]:CAf TVF CUTOFF CONTROL     ($00~$7F:-9600~+9600[CENT])
  1207.     param[82]:CAf AMPLITUDE CONTROL         ($00~$7F:-100.0~+100.0[%])
  1208.     param[83]:CAf LFO1 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1209.     param[84]:CAf LFO1 PITCH DEPTH         ($00~$7F:0~600[cent])
  1210.     param[85]:CAf LFO1 TVF DEPTH         ($00~$7F:0~2400[cent])
  1211.     param[86]:CAf LFO1 TVA DEPTH         ($00~$7F:0~100.0[%])
  1212.     param[87]:CAf LFO2 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1213.     param[88]:CAf LFO2 PITCH DEPTH         ($00~$7F:0~600[cent])
  1214.     param[89]:CAf LFO2 TVF DEPTH         ($00~$7F:0~2400[cent])
  1215.     param[90]:CAf LFO2 TVA DEPTH         ($00~$7F:0~100.0[%])
  1216.  
  1217.     param[91]:PAf PITCH CONTROL         ($28~$58:-24~+24[semitone])
  1218.     param[92]:PAf TVF CUTOFF CONTROL     ($00~$7F:-9600~+9600[CENT])
  1219.     param[93]:PAf AMPLITUDE CONTROL         ($00~$7F:-100.0~+100.0[%])
  1220.     param[94]:PAf LFO1 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1221.     param[95]:PAf LFO1 PITCH DEPTH         ($00~$7F:0~600[cent])
  1222.     param[96]:PAf LFO1 TVF DEPTH         ($00~$7F:0~2400[cent])
  1223.     param[97]:PAf LFO1 TVA DEPTH         ($00~$7F:0~100.0[%])
  1224.     param[98]:PAf LFO2 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1225.     param[99]:PAf LFO2 PITCH DEPTH         ($00~$7F:0~600[cent])
  1226.     param[100]:PAf LFO2 TVF DEPTH         ($00~$7F:0~2400[cent])
  1227.     param[101]:PAf LFO2 TVA DEPTH         ($00~$7F:0~100.0[%])
  1228.  
  1229.        param[102]:CC1 PITCH CONTROL         ($28~$58:-24~+24[semitone])
  1230.        param[103]:CC1 TVF CUTOFF CONTROL     ($00~$7F:-9600~+9600[CENT])
  1231.        param[104]:CC1 AMPLITUDE CONTROL         ($00~$7F:-100.0~+100.0[%])
  1232.        param[105]:CC1 LFO1 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1233.        param[106]:CC1 LFO1 PITCH DEPTH         ($00~$7F:0~600[cent])
  1234.        param[107]:CC1 LFO1 TVF DEPTH         ($00~$7F:0~2400[cent])
  1235.        param[108]:CC1 LFO1 TVA DEPTH         ($00~$7F:0~100.0[%])
  1236.        param[109]:CC1 LFO2 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1237.        param[110]:CC1 LFO2 PITCH DEPTH         ($00~$7F:0~600[cent])
  1238.        param[111]:CC1 LFO2 TVF DEPTH         ($00~$7F:0~2400[cent])
  1239.        param[112]:CC1 LFO2 TVA DEPTH         ($00~$7F:0~100.0[%])
  1240.  
  1241.        param[113]:CC2 PITCH CONTROL         ($28~$58:-24~+24[semitone])
  1242.        param[114]:CC2 TVF CUTOFF CONTROL     ($00~$7F:-9600~+9600[CENT])
  1243.        param[115]:CC2 AMPLITUDE CONTROL         ($00~$7F:-100.0~+100.0[%])
  1244.        param[116]:CC2 LFO1 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1245.        param[117]:CC2 LFO1 PITCH DEPTH         ($00~$7F:0~600[cent])
  1246.        param[118]:CC2 LFO1 TVF DEPTH         ($00~$7F:0~2400[cent])
  1247.        param[119]:CC2 LFO1 TVA DEPTH         ($00~$7F:0~100.0[%])
  1248.        param[120]:CC2 LFO2 RATE CONTROL         ($00~$7F:-10.0~+10.0[Hz])
  1249.        param[121]:CC2 LFO2 PITCH DEPTH         ($00~$7F:0~600[cent])
  1250.        param[122]:CC2 LFO2 TVF DEPTH         ($00~$7F:0~2400[cent])
  1251.        param[123]:CC2 LFO2 TVA DEPTH         ($00~$7F:0~100.0[%])
  1252.  
  1253.        param[124]:TONE MAP NUMBER         (0:SELECTED,1:SC55,2:SC88)
  1254.        param[125]:TONE MAP0 NUMBER         (1:SC55,2:SC88)
  1255.        param[126]:EQ ON/OFF             (0:OFF,1:ON)
  1256.        (SC88マニュアルp79~p81参照)
  1257. *-----------------------------------------------------------------------------
  1258.     int    zm_sc88_drum_setup( int port,int size,int dr_id,char *param );
  1259.  
  1260. 機能    SC88のドラム・セットアップ設定
  1261.  
  1262. 引数    int port:MIDIポートの番号(0-3)
  1263.          -1はカレントMIDI-OUTを使用
  1264.     int size:ドラム・セットアップ・パラメータ・データサイズ(1-9)
  1265.     int dr_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1266.               d16-d23=NOTE NUMBER(0-127)
  1267.               d24-d31=MAP NUMBER(0-1)
  1268.     char *param:ドラム・セットアップ・パラメータ格納バッファ
  1269.  
  1270. 戻り値    0:正常終了
  1271.     0以外:エラーコード
  1272.  
  1273. 備考    char *paramからの領域にドラム・セットアップ・パラメータを記述しておく。
  1274.     sizeは9以内で指定したsize個分のパラメータがSC88へ送信される。
  1275.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1276.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1277.  
  1278.     param[0]:PLAY KEY NUMBER            (0~127)
  1279.     param[1]:LEVEL                      (0~127)
  1280.     param[2]:ASSIGN GROUP NUMBER        (0:NON,1~127)
  1281.     param[3]:PANPOT                     (0:RANDOM,01(LEFT)~64~127(RIGHT))
  1282.     param[4]:REVERB DEPTH               (0~127:0.0~1.0)
  1283.     param[5]:CHORUS DEPTH               (0~127:0.0~1.0)
  1284.     param[6]:Rx NOTE OFF                (0~1:OFF/ON)
  1285.     param[7]:Rx NOTE ON                 (0~1:OFF/ON)
  1286.     param[8]:DELAY SEND LEVEL        (0-127:0.0~1.0)
  1287.     (SC88マニュアルp82参照)
  1288. *-----------------------------------------------------------------------------
  1289.     int    zm_sc88_drum_name( int port,int size,int mp_id,char *name );
  1290.  
  1291. 機能    SC88のドラム・セット名設定
  1292.  
  1293. 引数    int port:MIDIポートの番号(0-3)
  1294.          -1はカレントMIDI-OUTを使用
  1295.     int size:ドラム・セットアップ・パラメータ・データサイズ(1-8)
  1296.     int mp_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1297.               d16-d31=MAP NUMBER(0,1,$80,$81)
  1298.     char *name:ドラム・セット名文字列格納バッファ
  1299.  
  1300. 戻り値    0:正常終了
  1301.     0以外:エラーコード
  1302.  
  1303. 備考    文字列は12文字以内でchar *nameからの領域に文字列を記述しておく。
  1304.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1305.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1306.     MAP NUMBER=$80がユーザードラムセット65,MAP NUMBER=$81が
  1307.     ユーザードラムセット66に対応する。
  1308.     (SC88マニュアルp82参照)
  1309. *-----------------------------------------------------------------------------
  1310.     int    zm_sc88_user_inst( int port,int size,int ui_id,char *param );
  1311.  
  1312. 機能    SC88のユーザー音色の設定
  1313.  
  1314. 引数    int port:MIDIポートの番号(0-3)
  1315.          -1はカレントMIDI-OUTを使用
  1316.     int size:ユーザー音色パラメータ・データサイズ(1-11)
  1317.     int dr_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1318.               d16-d23=PROGRAM NUMBER(0-127)
  1319.               d24-d31=BANK NUMBER(0-1)
  1320.     char *param:ユーザー音色・パラメータ格納バッファ
  1321.  
  1322. 戻り値    0:正常終了
  1323.     0以外:エラーコード
  1324.  
  1325. 備考    char *paramからの領域にユーザー音色・パラメータを記述しておく。
  1326.     sizeは11以内で指定したsize個分のパラメータがSC88へ送信される。
  1327.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1328.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1329.  
  1330.     param[0]:SOURCE TONE#(MAP)          (1,2)
  1331.     param[1]:BANK NUMBER MSB            (0~127)
  1332.     param[2]:PROGRAM NUMBER               (0~127)
  1333.     param[3]:Vibrato rate               ($00~$7f:-64~+63)
  1334.     param[4]:Vibrato depth              ($00~$7f:-64~+63)
  1335.     param[5]:TVF cutoff freq.           ($00~$7f:-64~+63)
  1336.     param[6]:TVF resonance              ($00~$7f:-64~+63)
  1337.     param[7]:TVF&TVA Env.attack         ($00~$7f:-64~+63)
  1338.     param[8]:TVF&TVA Env.decay          ($00~$7f:-64~+63)
  1339.     param[9]:TVF&TVA Env.release        ($00~$7f:-64~+63)
  1340.     param[10]:Vibrato delay             ($00~$7f:-64~+63)
  1341.     (SC88マニュアルp82参照)
  1342. *-----------------------------------------------------------------------------
  1343.     int    zm_sc88_user_drum( int port,int size,int ud_id,char *param );
  1344.  
  1345. 機能    SC88のユーザードラムセットの設定
  1346.  
  1347. 引数    int port:MIDIポートの番号(0-3)
  1348.          -1はカレントMIDI-OUTを使用
  1349.     int size:ユーザードラムセット・パラメータ・データサイズ(1-12)
  1350.     int dr_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1351.               d16-d23=NOTE NUMBER(0-127)
  1352.               d24-d31=SET NUMBER(0-1)
  1353.     char *param:ユーザードラムセット・パラメータ格納バッファ
  1354.  
  1355. 戻り値    0:正常終了
  1356.     0以外:エラーコード
  1357.  
  1358. 備考    char *paramからの領域にユーザードラムセット・パラメータを記述しておく。
  1359.     sizeは12以内で指定したsize個分のパラメータがSC88へ送信される。
  1360.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1361.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1362.  
  1363.     param[0]:PLAY KEY NUMBER            (0~127)
  1364.     param[1]:LEVEL                      (0~127)
  1365.     param[2]:ASSIGN GROUP NUMBER        (0:NON,1~127)
  1366.     param[3]:PANPOT                     (0:RANDOM,01(LEFT)~64~127(RIGHT))
  1367.     param[4]:REVERB DEPTH               (0~127:0.0~1.0)
  1368.     param[5]:CHORUS DEPTH               (0~127:0.0~1.0)
  1369.     param[6]:Rx NOTE OFF                (0~1:OFF/ON)
  1370.     param[7]:Rx NOTE ON                 (0~1:OFF/ON)
  1371.     param[8]:DELAY SEND LEVEL        (0-127:0.0~1.0)
  1372.     param[9]:SOURCE DRUM SET#(MAP)        (1-2)
  1373.     param[10]:PROGRAM NUMBER        (0-127)
  1374.     param[11]:SOURCE NOTE NUMBER        (0-127)
  1375.     (SC88マニュアルp82参照)
  1376. *-----------------------------------------------------------------------------
  1377.     int    zm_mt32_reset( int port,int id );
  1378.  
  1379. 機能    MT32の初期化
  1380.  
  1381. 引数    int port:MIDIポートの番号(0-3)
  1382.          -1はカレントMIDI-OUTを使用
  1383.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1384.  
  1385. 戻り値    0:正常終了
  1386.     0以外:エラーコード
  1387.  
  1388. 備考    idを-1とすると以前設定したものが選択される。最初の使用時に
  1389.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1390. *-----------------------------------------------------------------------------
  1391.     int    zm_mt32_partial_reserve( int port,int id,char *rsv );
  1392.  
  1393. 機能    MT32のパーシャルリザーブ
  1394.  
  1395. 引数    int port:MIDIポートの番号(0-3)
  1396.          -1はカレントMIDI-OUTを使用
  1397.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  1398.     char *rsv:パート1~パート9までのパーシャルリザーブ値が
  1399.           格納されているバッファ
  1400.  
  1401. 戻り値    0:正常終了
  1402.     0以外:エラーコード
  1403.  
  1404. 備考    char *rsvからの領域にパーシャルリザーブ値を9パート分格納しておく。
  1405.     また、合計が楽器の最大同時発声数以下にならなければならない。
  1406.     param[0]=パート1,param[1]=パート2…,param[8]=パート9というふうに対応する。
  1407.     なお、パート9はリズムパートに対応する。
  1408.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1409.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1410. *-----------------------------------------------------------------------------
  1411.     int    zm_mt32_reverb( int port,int size,int id,char *rsv );
  1412.  
  1413. 機能    MT32のリバーブパラメータの設定
  1414.  
  1415. 引数    int port:MIDIポートの番号(0-3)
  1416.          -1はカレントMIDI-OUTを使用
  1417.     int size:リバーブパラメータ・データサイズ(1-3)
  1418.     int id:DEVICE ID(0-127,-1:以前の値を使用)
  1419.     char *rvb:リバーブパラメータ格納バッファ
  1420.  
  1421. 戻り値    0:正常終了
  1422.     0以外:エラーコード
  1423.  
  1424. 備考    char *rvbからの領域にリバーブパラメータを記述しておく。sizeは3以内で、
  1425.     指定したsize個分のパラメータがMT32へ送信される。
  1426.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1427.     省略した場合はZMUSIC内のデフォルト値$10が選択される
  1428.  
  1429.     rvb[0]:REVERB MODE                (0:Room,1:Hall,2:Plate,3:Tap Delay)
  1430.     rvb[1]:REVERB TIME                (0~7)
  1431.     rvb[2]:REVERB LEVEL               (0~7)
  1432.     (MT32マニュアルp35,CM64マニュアルp30参照)
  1433. *-----------------------------------------------------------------------------
  1434.     int    zm_mt32_part_setup( int port,int size,int id,char *rsv );
  1435.  
  1436. 機能    MT32のパート・パラメータの設定
  1437.  
  1438. 引数    int port:MIDIポートの番号(0-3)
  1439.          -1はカレントMIDI-OUTを使用
  1440.     int size:パートパラメータ・データサイズ(1-9)
  1441.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1442.     char *param:パートパラメータ格納バッファ
  1443.  
  1444. 戻り値    0:正常終了
  1445.     0以外:エラーコード
  1446.  
  1447. 備考    char *paramからの領域にパートパラメータを記述しておく。
  1448.     パートパラメータは
  1449.     param[0]=パート1のMIDIチャンネル,param[1]=パート2のMIDIチャンネル…,
  1450.     param[8]=リズムパートのMIDIチャンネル
  1451.     という構成を取る
  1452.     sizeは9以内で指定したsize個分のパラメータがMT32へ送信される。
  1453.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1454.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1455. *-----------------------------------------------------------------------------
  1456.     int    zm_mt32_drum( int port,int size,int dr_id,char *drum );
  1457.  
  1458. 機能    MT32のドラム・セットアップ設定
  1459.  
  1460. 引数    int port:MIDIポートの番号(0-3)
  1461.          -1はカレントMIDI-OUTを使用
  1462.     int size:ドラム・セットアップ・パラメータ・データサイズ(1-4)
  1463.     int dr_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1464.               d16-d31=NOTE NUMBER(24~87)
  1465.     char *drum:ドラム・セットアップ・パラメータ格納バッファ
  1466.  
  1467. 戻り値    0:正常終了
  1468.     0以外:エラーコード
  1469.  
  1470. 備考    char *drumからの領域にドラム・セットアップ・パラメータを記述しておく。
  1471.     sizeは4以内で指定したsize個分のパラメータがMT32へ送信される。
  1472.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1473.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1474.  
  1475.     drum[0]:TIMBRE                   (0~63:i1~64,64~127:r1~64)
  1476.     drum[1]:OUTPUT LEVEL             (0~100)
  1477.     drum[2]:PANPOT                   (0~14)
  1478.     drum[3]:REVERB SWITCH            (0~1:OFF/ON)
  1479.         (MT32マニュアルp35,CM64マニュアルp30参照)
  1480. *-----------------------------------------------------------------------------
  1481.     int    zm_mt32_common( int port,int size,int cm_id,char *common );
  1482.  
  1483. 機能    MT32のコモン・パラメータの設定
  1484.  
  1485. 引数    int port:MIDIポートの番号(0-3)
  1486.          -1はカレントMIDI-OUTを使用
  1487.     int size:コモン・パラメータ・データサイズ(1-4)
  1488.     int cm_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1489.               d16-d31=PROGRAM NUMBER(1-64)
  1490.     char *common:コモン・パラメータ格納バッファ
  1491.  
  1492. 戻り値    0:正常終了
  1493.     0以外:エラーコード
  1494.  
  1495. 備考    char *commonからの領域にコモン・パラメータを記述しておく。
  1496.     sizeは4以内で指定したsize個分のパラメータがMT32へ送信される。
  1497.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1498.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1499.  
  1500.     common[0]:Structure of Partial#1&2        (0~12:1~13)
  1501.     common[1]:Structure of Partial#3&4        (0~12:1~13)
  1502.     common[2]:PARTIAL MUTE                    (0~15)
  1503.     common[3]:ENV MODE                        (0~1:NORMAL,NO SUSTAIN)
  1504.         (MT32マニュアルp34,CM64マニュアルp29参照)
  1505. *-----------------------------------------------------------------------------
  1506.     int    zm_mt32_partial( int port,int size,int pl_id,char *partial );
  1507.  
  1508. 機能    MT32のパーシャル・パラメータ設定
  1509.  
  1510. 引数    int port:MIDIポートの番号(0-3)
  1511.          -1はカレントMIDI-OUTを使用
  1512.     int size:パーシャル・パラメータ・データサイズ(1-58)
  1513.     int pl_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1514.               d16-d23=PARTIAL NUMBER(1-4)
  1515.               d24-d31=PROGRAM NUMBER(1-64)
  1516.     char *partial:パーシャル・パラメータ格納バッファ
  1517.  
  1518. 戻り値    0:正常終了
  1519.     0以外:エラーコード
  1520.  
  1521. 備考    char *partialからの領域にパーシャル・パラメータを記述しておく。
  1522.     sizeは58以内で指定したsize個分のパラメータがMT32へ送信される。
  1523.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1524.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1525.  
  1526.     partial[0]:WG PITCH COARSE                    (0~96:C1,C#1,~,C9)
  1527.     partial[1]:WG PITCH FINE                      (0~100:-50~+50)
  1528.     partial[2]:WG PITCH KEYFOLLOW                 (0~16:-1,-1/2,-1/4,0,1/8,1/4,
  1529.                              3/8,1/2,5/8,3/4,7/8,1,
  1530.                              5/4,3/2,2,s1,s2)
  1531.     partial[3]:WG PITCH BENDER SW                 (0~1:OFF/ON)
  1532.     partial[4]:WG WAVEFORM/PCM BANK               (0~3:SQU1,SAW1,SQU2,SAW2)
  1533.     partial[5]:WG PCM WAVE                        (0~127:1~128)
  1534.     partial[6]:WG PULSE WIDTH                     (0~100)
  1535.     partial[7]:WG PW VELO SENS                    (0~14:-7~+7)
  1536.     partial[8]:P-ENV DEPTH                        (0~10)
  1537.     partial[9]:P-ENV VELO SENS                    (0~3)
  1538.        partial[10]:P-ENV TIME KEYF                    (0~4)
  1539.        partial[11]:P-ENV TIME 1                       (0~100)
  1540.        partial[12]:P-ENV TIME 2                       (0~100)
  1541.        partial[13]:P-ENV TIME 3                       (0~100)
  1542.        partial[14]:P-ENV TIME 4                       (0~100)
  1543.        partial[15]:P-ENV LEVEL 0                      (0~100:-50~+50)
  1544.        partial[16]:P-ENV LEVEL 1                      (0~100:-50~+50))
  1545.        partial[17]:P-ENV LEVEL 2                      (0~100:-50~+50)
  1546.        partial[18]:P-ENV SUSTAIN LEVEL                (0~100:-50~+50)
  1547.        partial[19]:END LEVEL                          (0~100:-50~+50)
  1548.        partial[20]:P-LFO RATE                         (0~100)
  1549.        partial[21]:P-LFO DEPTH                        (0~100)
  1550.        partial[22]:P-LFO MOD SENS                     (0~100)
  1551.        partial[23]:TVF CUTOFF FREQ                    (0~100)
  1552.        partial[24]:TVF RESONANCE                      (0~30)
  1553.        partial[25]:TVF KEYFOLLOW                      (0~14:-1,-1/2,-1/4,0,1/8,1/4,
  1554.                              3/8,1/2,5/8,3/4,7/8,1,
  1555.                              5/4,3/2,2)
  1556.        partial[26]:TVF BIAS POINT/DIR                 (0~127)
  1557.        partial[27]:TVF BIAS LEVEL                     (0~14:-7~+7)
  1558.        partial[28]:TVF ENV DEPTH                      (0~100)
  1559.        partial[29]:TVF ENV VELO SENS                  (0~100)
  1560.        partial[30]:TVF ENV DEPTH KEYF                 (0~4)
  1561.        partial[31]:TVF ENV TIME KEYF                  (0~4)
  1562.        partial[32]:TVF ENV TIME 1                     (0~100)
  1563.        partial[33]:TVF ENV TIME 2                     (0~100)
  1564.        partial[34]:TVF ENV TIME 3                     (0~100)
  1565.        partial[35]:TVF ENV TIME 4                     (0~100)
  1566.        partial[36]:TVF ENV TIME 5                     (0~100)
  1567.        partial[37]:TVF ENV LEVEL 1                    (0~100)
  1568.        partial[38]:TVF ENV LEVEL 2                    (0~100)
  1569.        partial[39]:TVF ENV LEVEL 3                    (0~100)
  1570.        partial[40]:TVF ENV SUSTAIN LEVEL              (0~100)
  1571.        partial[41]:TVA LEVEL                          (0~100)
  1572.        partial[42]:TVA VELO SENS                      (0~100:-50~+50
  1573.        partial[43]:TVA BIAS POINT 1                   (0~127)
  1574.        partial[44]:TVA BIAS LEVEL 1                   (0~12:-12~0)
  1575.        partial[45]:TVA BIAS POINT 2                   (0~127)
  1576.        partial[46]:TVA BIAS LEVEL 2                   (0~12:-12~0)
  1577.        partial[47]:TVA ENV TIME KEYF                  (0~4)
  1578.        partial[48]:TVA ENV TIME V_FOLLOW              (0~4)
  1579.        partial[49]:TVA ENV TIME 1                     (0~100)
  1580.        partial[50]:TVA ENV TIME 2                     (0~100)
  1581.        partial[51]:TVA ENV TIME 3                     (0~100)
  1582.        partial[52]:TVA ENV TIME 4                     (0~100)
  1583.        partial[53]:TVA ENV TIME 5                     (0~100)
  1584.        partial[54]:TVA ENV LEVEL 1                    (0~100)
  1585.        partial[55]:TVA ENV LEVEL 2                    (0~100)
  1586.        partial[56]:TVA ENV LEVEL 3                    (0~100)
  1587.        partial[57]:TVA ENV SUSTAIN LEVEL              (0~100)
  1588.        (MT32マニュアルp34,CM64マニュアルp29参照)
  1589. *-----------------------------------------------------------------------------
  1590.     int    zm_mt32_patch( int port,int size,int pt_id,char *patch );
  1591.  
  1592. 機能    MT32のパッチ・パラメータ設定
  1593.  
  1594. 引数    int port:MIDIポートの番号(0-3)
  1595.          -1はカレントMIDI-OUTを使用
  1596.     int size:パッチ・パラメータ・データサイズ(1-7)
  1597.     int pt_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1598.               d16-d31=PATCH NUMBER(1-128)
  1599.     char *patch:パッチ・パラメータ格納バッファ
  1600.  
  1601. 戻り値    0:正常終了
  1602.     0以外:エラーコード
  1603.  
  1604. 備考    char *patchからの領域にパッチ・パラメータを記述しておく。
  1605.     sizeは7以内で指定したsize個分のパラメータがMT32へ送信される。
  1606.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1607.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1608.  
  1609.     patch[0]:TIMBRE GROUP               (0~3:a,b,i,r)
  1610.     patch[1]:TIMBRE NUMBER              (0~63)
  1611.     patch[2]:KEY SHIFT                  (0~48:-24~+24)
  1612.     patch[3]:FINE TUNE                  (0~100:-50~+50)
  1613.     patch[4]:BENDER RANGE               (0~24)
  1614.     patch[5]:ASSIGN MODE                (0~3:POLY1~4)
  1615.     patch[6]:REVERB SWITCH              (0~1:OFF/ON)
  1616.     (MT32マニュアルp35,CM64マニュアルp30参照)
  1617. *-----------------------------------------------------------------------------
  1618.     int    zm_mt32_print( int port,int size,int id,char *mes );
  1619.  
  1620. 機能    MT32の画面へのメッセージ出力
  1621.  
  1622. 引数    int port:MIDIポートの番号(0-3)
  1623.          -1はカレントMIDI-OUTを使用
  1624.     int size:メッセージ長(1-20)
  1625.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1626.     char *mes:文字列格納バッファ
  1627.  
  1628. 戻り値    0:正常終了
  1629.     0以外:エラーコード
  1630.  
  1631. 備考    メッセージは20文字以内でchar *mesからの領域に文字列を記述しておく。
  1632.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1633.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1634. *-----------------------------------------------------------------------------
  1635.     int    zm_u220_setup( int port,int id,char *setup );
  1636.  
  1637. 機能    U220のセットアップ・パラメータの設定
  1638.  
  1639. 引数    int port:MIDIポートの番号(0-3)
  1640.          -1はカレントMIDI-OUTを使用
  1641.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1642.     char *setup:セットアップ・パラメータ格納バッファ
  1643.  
  1644. 戻り値    0:正常終了
  1645.     0以外:エラーコード
  1646.  
  1647. 備考    char *setupからの領域にセットアップ・パラメータを記述しておく。
  1648.     char *setupの構成は必ず下に示す書式に従う。
  1649.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1650.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1651.  
  1652.     setup[0]:Chorus SW                          (0~1:OFF/ON)
  1653.     setup[1]:Reverb SW                          (0~1:OFF/ON)
  1654.     setup[2]:Rx Cntrl Channel                   (1~17:1~16,OFF)
  1655.     setup[3]:Patch Change                       (0~5:MAP1~MAP4,Dir,OFF)
  1656.     setup[4]:Timbre Change                      (0~5:MAP1~MAP4,Dir,OFF)
  1657.     setup[5]:Rhythm Change                      (0~5:MAP1~MAP4,Dir,OFF)
  1658.     setup[6]:R.Inst Assign                      (0~5:MAP1~MAP4,Dir,OFF)
  1659.      (U220マニュアルp46,p146~148参照)
  1660.  
  1661. 注意    U220用の命令はU20に対しても使用できる。以下同様。
  1662. *-----------------------------------------------------------------------------
  1663.     int    zm_u220_part_setup( int port,int pt_id,char *setup );
  1664.  
  1665. 機能    U220の(テンポラリパッチ)パートセットアップ・パラメータの設定
  1666.  
  1667. 引数    int port:MIDIポートの番号(0-3)
  1668.          -1はカレントMIDI-OUTを使用
  1669.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1670.            d16-31=PART NUMBER(1-6)
  1671.     char *setup:パートセットアップ・パラメータ格納バッファ
  1672.  
  1673. 戻り値    0:正常終了
  1674.     0以外:エラーコード
  1675.  
  1676. 備考    char *setupからの領域にパートセットアップ・パラメータを記述しておく。
  1677.     char *setupの構成は必ず下に示す書式に従う。
  1678.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1679.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1680.  
  1681.     setup[0]:Timbre Number                  (1~128)
  1682.     setup[1]:Voice Reserve                  (0~30)
  1683.     setup[2]:Receive Channel                (1~17:1~16,OFF)
  1684.     setup[3]:Key Range Low                  (0~127:C-1~G9)
  1685.     setup[4]:Key Range High                 (0~127:C-1~G9)
  1686.     setup[5]:Velo Level                     (0~1:Above/Below)
  1687.     setup[6]:Velo Threshold                 (0~127)
  1688.     setup[7]:Output Assign                  (0~4:Dry,Rev,Cho,Dir1,Dir2)
  1689.     setup[8]:Level                          (0~127)
  1690.     setup[9]:Pan                            (0~15:L7~M~R7)
  1691.        setup[10]:Rx Volume                      (0~1:OFF/ON)
  1692.        setup[11]:Rx Pan                         (0~1:OFF/ON)
  1693.        setup[12]:Rx Hold                        (0~1:OFF/ON)
  1694.        (U220マニュアルp58,p149参照)
  1695. *-----------------------------------------------------------------------------
  1696.     int    zm_u220_common( int port,int id,char *common );
  1697.  
  1698. 機能    U220の(テンポラリパッチ)コモン・パラメータの設定
  1699.  
  1700. 引数    int port:MIDIポートの番号(0-3)
  1701.          -1はカレントMIDI-OUTを使用
  1702.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1703.     char *common:コモン・パラメータ格納バッファ
  1704.  
  1705. 戻り値    0:正常終了
  1706.     0以外:エラーコード
  1707.  
  1708. 備考    char *commonからの領域にコモン・パラメータを記述しておく。
  1709.     char *commonの構成は必ず下に示す書式に従う。
  1710.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1711.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1712.  
  1713.     common[0]:Chorus Type                    (0~4:Chorus1,Chorus2,FB-Chorus,
  1714.                           Flanger,Short Delay)
  1715.     common[1]:Chorus Out Mode                (0~1:Pre Rev,Post Rev)
  1716.     common[2]:Chorus Level                   (0~31)
  1717.     common[3]:Chorus Delay                   (0~31)
  1718.     common[4]:Chorus Rate                    (0~31)
  1719.     common[5]:Chorus Depth                   (0~31)
  1720.     common[6]:Chorus Feedback                (1~63:-31~0~+31)
  1721.     common[7]:Reverb Type                    (0~7:Room1~3,Hall1~2,Gate
  1722.                           Delay,CrossDelay)
  1723.     common[8]:Reverb Time                    (0~31)
  1724.     common[9]:Reverb Level                   (0~31)
  1725.        common[10]:Reverb Delay Feedback          (0~31)
  1726.        common[11]:Reverb Pre Delay Feedback      (0~31)
  1727.        common[12]:Param1 #                       (0~63:0~5,7~31,64~95,OFF)
  1728.        common[13]:Param1 Param                   (0:Timbre Level,1:Env Attack
  1729.                           2:Env Decay,3:Env Sustain
  1730.                           4:Env Release,5:A.Bend Depth
  1731.                           6:A.Bend Rate,7:Detune Depth
  1732.                           8:Vib Rate,9:Vib Wave Form
  1733.                           10:Vib Depth,11:Vib Delay
  1734.                           12:Vib Rise Time,13:Vib Mod Depth
  1735.                           14:Chorus Level,15:Chorus Rate
  1736.                           16:Chorus Feedback,17:Reverb Level
  1737.                           18:Delay Feedback)
  1738.        common[14]:Param2 #                       (Same as Param1 #)
  1739.        common[15]:Param2 Param                   (Same as Param1 Param)
  1740.        common[16]:Param3 #                       (Same as Param1 #)
  1741.        common[17]:Param3 Param                   (Same as Param1 Param)
  1742.        (U220マニュアルp54,p149参照)
  1743. *-----------------------------------------------------------------------------
  1744.     int    zm_u220_timbre( int port,int tm_id,char *timbre );
  1745.  
  1746. 機能    U220のティンバー・パラメータの設定
  1747.  
  1748. 引数    int port:MIDIポートの番号(0-3)
  1749.          -1はカレントMIDI-OUTを使用
  1750.     int tm_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1751.           d16-d31=PROGRAM NUMBER(1-128)
  1752.     char *timbre:ティンバー・パラメータ格納バッファ
  1753.  
  1754. 戻り値    0:正常終了
  1755.     0以外:エラーコード
  1756.  
  1757. 備考    char *timbreからの領域にティンバー・パラメータを記述しておく。
  1758.     char *timbreの構成は必ず下に示す書式に従う。
  1759.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1760.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1761.  
  1762.     timbre[0]:Tone Media                      (0~31:I,1~31)
  1763.     timbre[1]:Tone Number                     (1~128)
  1764.     timbre[2]:Timbre Level                    (0~127)
  1765.     timbre[3]:Velocity Sens                   (1~15:-7~+7)
  1766.     timbre[4]:Channel Press Sens              (1~15:-7~+7)
  1767.     timbre[5]:Env Attack Rate                 (1~15:-7~+7)
  1768.     timbre[6]:Env Decay Rate                  (1~15:-7~+7)
  1769.     timbre[7]:Env Sustain Level               (1~15:-7~+7)
  1770.     timbre[8]:Env Release Rate                (1~15:-7~+7)
  1771.     timbre[9]:Pitch Shift Coarse              (8~56:-24~+24)
  1772.        timbre[10]:Pitch Shift Fine                (14~114:-50~+50)
  1773.        timbre[11]:Bend Range Lower                (0~15:-36,-24,-12~0)
  1774.        timbre[12]:Bend Range Upper                (0~12)
  1775.        timbre[13]:Channel After Sens              (0~27:-36,-24,-12~+12)
  1776.        timbre[14]:Poly After Sens                 (0~27:-36,-24,-12~+12)
  1777.        timbre[15]:Auto Bend Depth                 (0~27:-36,-24,-12~+12)
  1778.        timbre[16]:Auto Bend Rate                  (0~15)
  1779.        timbre[17]:Detune Depth                    (0~15)
  1780.        timbre[18]:Rate                            (0~63)
  1781.        timbre[19]:Waveform                        (0~8)
  1782.        timbre[20]:Depth                           (0~15)
  1783.        timbre[21]:Delay                           (0~15)
  1784.        timbre[22]:Rise Time                       (0~15)
  1785.        timbre[23]:Modulation Depth                (0~15)
  1786.        timbre[24]:Ch After Sens                   (0~15)
  1787.        timbre[25]:Poly After Sens                 (0~15)
  1788.        (U220マニュアルp65,p149参照)
  1789. *-----------------------------------------------------------------------------
  1790.     int    zm_u220_drum_setup( int port,int id,char *setup );
  1791.  
  1792. 機能    U220の(テンポラリパッチ)パッチ・ドラム・セットアップ設定
  1793.  
  1794. 引数    int port:MIDIポートの番号(0-3)
  1795.          -1はカレントMIDI-OUTを使用
  1796.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1797.     char *setup:ドラム・セットアップ・パラメータ格納バッファ
  1798.  
  1799. 戻り値    0:正常終了
  1800.     0以外:エラーコード
  1801.  
  1802. 備考    char *setupからの領域にドラム・セットアップ・パラメータを
  1803.     記述しておく。char *setupの構成は必ず下に示す書式に従う。
  1804.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1805.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1806.  
  1807.     setup[0]:Rhythm Setup #                  (0~3:1~4)
  1808.     setup[1]:Voice Reserve                   (0~30)
  1809.     setup[2]:Receive Channel                 (1~17:1~16,OFF)
  1810.     setup[3]:Level                           (0~127)
  1811.     setup[4]:Level Boost Sw                  (0~1:OFF/ON)
  1812.     setup[5]:Rx Volume                       (0~1:OFF/ON)
  1813.     setup[6]:Rx Hold                         (0~1:OFF/ON)
  1814.         (U220マニュアルp63,p149参照)
  1815. *-----------------------------------------------------------------------------
  1816.     int    zm_u220_drum_inst( int port,int dr_id,char *inst );
  1817.  
  1818. 機能    U220の(テンポラリパッチ)ドラム音色設定
  1819.  
  1820. 引数    int port:MIDIポートの番号(0-3)
  1821.          -1はカレントMIDI-OUTを使用
  1822.     int dr_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1823.          :d16-d31=NOTE NUMBER(35-99)
  1824.     char *inst:ドラム音色パラメータ格納バッファ
  1825.  
  1826. 戻り値    0:正常終了
  1827.     0以外:エラーコード
  1828.  
  1829. 備考    char *instからの領域にドラム音色パラメータを記述しておく。
  1830.     char *instの構成は必ず下に示す書式に従う。
  1831.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1832.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1833.  
  1834.     inst[0]:Tone Media                      (0~31:I,1~31)
  1835.     inst[1]:Tone Number                     (1~128)
  1836.     inst[2]:Source Key                      (0~127:C-1~G9)
  1837.     inst[3]:Mute Inst                       (34~98:OFF,B1~D7)
  1838.     inst[4]:Inst Level                      (0~31)
  1839.     inst[5]:Velocity Sens                   (0~15)
  1840.     inst[6]:Env Mode                        (0~1:Sustain,No Sustain)
  1841.     inst[7]:Env Attack Rate                 (1~15:-7~+7)
  1842.     inst[8]:Env Decay Rate                  (1~15:-7~+7)
  1843.     inst[9]:Env Release Rate                (1~15:-7~+7)
  1844.        inst[10]:Pitch Shift Coarse              (0~27:-36,-24,-12~+12)
  1845.        inst[11]:Pitch Shift Fine                (14~114:-50~+50)
  1846.        inst[12]:Channel After Sens              (0~27:-36,-24,-12~+12)
  1847.        inst[13]:Poly After Sens                 (0~27:-36,-24,-12~+12)
  1848.        inst[14]:Random                          (0~15)
  1849.        inst[15]:Auto Bend Depth                 (0~27:-36,-24,-12~+12)
  1850.        inst[16]:Auto Bend Rate                  (0~15)
  1851.        inst[17]:Detune Depth                    (0~15)
  1852.        inst[18]:Output Assign                   (0~3:Dry,Rev,Cho,Dir1)
  1853.        inst[19]:Pan                             (0~15:L7~M~R7)
  1854.        (U220マニュアルp72,p149)
  1855. *-----------------------------------------------------------------------------
  1856.     int    zm_u220_print( int port,int size,int id,char *mes );
  1857.  
  1858. 機能    U220の画面へのメッセージ出力
  1859.  
  1860. 引数    int port:MIDIポートの番号(0-3)
  1861.          -1はカレントMIDI-OUTを使用
  1862.     int size:メッセージ長(1-12)
  1863.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  1864.     char *mes:文字列格納バッファ
  1865.  
  1866. 戻り値    0:正常終了
  1867.     0以外:エラーコード
  1868.  
  1869. 備考    メッセージは12文字以内でchar *mesからの領域に文字列を記述しておく。
  1870.     idを-1とすると以前設定したものが選択される。最初の使用時に
  1871.     省略した場合はZMUSIC内のデフォルト値$10が選択される。
  1872. *-----------------------------------------------------------------------------
  1873.     int    zm_m1_setup( char *setup );
  1874.  
  1875. 機能    M1のSEQ-SONG0のMIDIチャンネルの設定
  1876.  
  1877. 引数    char *setup:8パート分のMIDIチャンネル列格納バッファ
  1878.  
  1879. 戻り値    0:正常終了
  1880.     0以外:エラーコード
  1881.  
  1882. 備考    char *setupで表される領域には必ず8パート分のMIDIチャンネルを
  1883.     記載しておく。
  1884.  
  1885.     setup[0]:パート1のMIDIチャンネル
  1886.     setup[1]:パート2のMIDIチャンネル
  1887.     setup[2]:パート3のMIDIチャンネル
  1888.     setup[3]:パート4のMIDIチャンネル
  1889.     setup[4]:パート5のMIDIチャンネル
  1890.     setup[5]:パート6のMIDIチャンネル
  1891.     setup[6]:パート7のMIDIチャンネル
  1892.     setup[7]:パート8のMIDIチャンネル
  1893.  
  1894. 注意    M1用の命令はM1EX/M1R/M1REXに対しても使用できる。以下同様。
  1895. *-----------------------------------------------------------------------------
  1896.     int    zm_m1_part_setup( char *ptstup );
  1897.  
  1898. 機能    M1のSEQ-SONG0のトラックパラメータの設定
  1899.  
  1900. 引数    char *ptstup:8パート分のトラックパラメータ格納バッファ
  1901.  
  1902. 戻り値    0:正常終了
  1903.     0以外:エラーコード
  1904.  
  1905. 備考    char *ptstupで表される領域には必ず8パート分のトラックパラメータを
  1906.     記載しておく。
  1907.  
  1908.     TRACK 1
  1909.     ptstup[0]:PROGRAM NUMBER                  (0~199:I00~C99)
  1910.     ptstup[1]:OUTPUT LEVEL                    (0~99)
  1911.     ptstup[2]:KEY TRANSPOSE                   ($F4~$0C:-12~12)
  1912.     ptstup[3]:DETUNE                          ($CE~$32:-50~+50)
  1913.     ptstup[4]:PAN                             (0~13:10:0~0:10,C,C+D,D)
  1914.     TRACK 2~8
  1915.     以下同様
  1916.     (M1マニュアルp126参照)
  1917. *-----------------------------------------------------------------------------
  1918.     int    zm_m1_effect_setup( char *effect );
  1919.  
  1920. 機能    M1のSEQ-SONG0のエフェクトパラメータの設定
  1921.  
  1922. 引数    char *effect:エフェクトパラメータ格納バッファ
  1923.  
  1924. 戻り値    0:正常終了
  1925.     0以外:エラーコード
  1926.  
  1927. 備考    char *effectで表される領域にはダミーデータも含めて必ず25個の
  1928.     エフェクトパラメータが記載されていなければならない。
  1929.  
  1930.     effect[0]:Effect 1 Pattern No.            (0~33:1~32,Thru)
  1931.     effect[1]:Effect 2 Pattern No.            (0~33:1~32,Thru)
  1932.     effect[2]:Effect 1 L-Ch E.Balnc           (0~100)
  1933.     effect[3]:Effect 1 R-Ch E.Balnc           (0~100)
  1934.     effect[4]:Effect 2 L-Ch E.Balnc           (0~100)
  1935.     effect[5]:Effect 2 R-Ch E.Balnc           (0~100)
  1936.     effect[6]:Output 3 Pan                    (0~101:OFF,100:0~0:100)
  1937.     effect[7]:Output 4 Pan                    (0~101:OFF,100:0~0:100)
  1938.     effect[8]:Effect I/O                      (BIT0:Effect 1 L-Ch 0=OFF/1=ON
  1939.                           BIT1:Effect 1 R-Ch 0=OFF/1=ON
  1940.                           BIT2:Effect 2 L-Ch 0=OFF/1=ON
  1941.                           BIT3:Effect 2 R-Ch 0=OFF/1=ON)
  1942.                           BIT4:Effect 2 0=PARALLEL/1=SERIAL)
  1943.     effect[9~16]:Effect 1 Parameter 
  1944.        effect[17~24]:Effect 2 Parameter
  1945.  
  1946.     Structure  of  Effect  Parameter
  1947.                              (ofs=9 or 17)
  1948.     1~3:Hall (4,5:Room,6:Live Stage)
  1949.     effect[ofs+0]:Reverb Time                 (0~97:0.2~9.9),(0~48:0.2~5.0)
  1950.     effect[ofs+1]:Dummy                         0
  1951.     effect[ofs+2]:High Damp                   (0~99)
  1952.     effect[ofs+3]:Pre Delay                   (0~200)
  1953.     effect[ofs+4]:E/R Level                   (0~99)
  1954.     effect[ofs+5]:Dummy                         0
  1955.     effect[ofs+6]:EQ High                     ($F4~$0C:-12~+12)
  1956.     effect[ofs+7]:EQ Low                      ($F4~$0C:-12~+12)
  1957.  
  1958.     7~9:Early Reflection 1,2,3
  1959.     effect[ofs+0]:E/R Time                    (0~70:100~800)
  1960.     effect[ofs+1]:Pre Delay                   (0~200)
  1961.     effect[ofs+2]:Dummy                       0
  1962.           :                                      :
  1963.     effect[ofs+5]:Dummy                       0
  1964.     effect[ofs+6]:EQ High                     ($F4~$0C:-12~+12)
  1965.     effect[ofs+7]:EQ Low                      ($F4~$0C:-12~+12)
  1966.  
  1967.     10:Stereo Delayt,11:Cross Delay
  1968.     effect[ofs+0]:Delay Time L (L)            (0~500)
  1969.     effect[ofs+1]:Delay Time L (H)
  1970.     effect[ofs+2]:Feedback                    ($9D~$63:-99~99)
  1971.     effect[ofs+3]:High Damp                   (0~99)
  1972.     effect[ofs+4]:Delay Time R (L)            (0~500)
  1973.     effect[ofs+5]:Delay Time R (H)
  1974.     effect[ofs+6]:EQ High                     ($F4~$0C:-12~+12)
  1975.     effect[ofs+7]:EQ Low                      ($F4~$0C:-12~+12)
  1976.  
  1977.     12~13:Stereo Chorus 1~2 (14~15:Flanger)
  1978.     effect[ofs+0]:Depth                       (0~99)
  1979.     effect[ofs+1]:Speed                       (0~99:0.03~3.00 0.03step
  1980.                           100~199:3.1~13.0 0.1step
  1981.                           200~216:14.0~30.0 1.0step)
  1982.     effect[ofs+2]:LFO Status                  (BIT0:Waveform =0:Sin,=1:Tri
  1983.                           BIT1:Phase =0:0.0゚,=1:180゚
  1984.                           BIT2:Wave Shape =0:Normal
  1985.                                 =1:for Flanger)
  1986.     effect[ofs+3]:Feedback                    ($9D~$63:-99~+99)
  1987.     effect[ofs+4]:Delay Time                  (0~200),(0~50)
  1988.     effect[ofs+5]:Dummy                         0
  1989.     effect[ofs+6]:EQ High                     ($F4~$0C:-12~+12)
  1990.     effect[ofs+7]:EQ Low                      ($F4~$0C:-12~+12)
  1991.  
  1992.     16~17:Phase Shifter 1~2
  1993.     effect[ofs+0]:Depth                       (0~99)
  1994.     effect[ofs+1]:Speed                       (0~99:0.03~3.00 0.03step
  1995.                           100~199:3.1~13.0 0.1step
  1996.                           200~216:14.0~30.0 1.0step)
  1997.     effect[ofs+2]:LFO Status                  (BIT0:Waveform =0:Sin,=1:Tri
  1998.                           BIT1:Phase =0:0.0゚,=1:180゚
  1999.                           BIT2:Wave Shape =0:Normal
  2000.                                 =1:for Flanger)
  2001.     effect[ofs+3]:Feedback                    ($9D~$63:-99~+99)
  2002.     effect[ofs+4]:Manual                      (0~99)
  2003.     effect[ofs+5]:Dummy                       0
  2004.     effect[ofs+6]:Dummy                       0
  2005.     effect[ofs+7]:Dummy                       0
  2006.  
  2007.     18~19:Stereo Toremolo 1~2
  2008.     effect[ofs+0]:Depth                       (0~99)
  2009.     effect[ofs+1]:Speed                       (0~99:0.03~3.00 0.03step
  2010.                           100~199:3.1~13.0 0.1step
  2011.                           200~216:14.0~30.0 1.0step)
  2012.     effect[ofs+2]:LFO Status                  (BIT0:Waveform =0:Sin,=1:Tri
  2013.                           BIT1:Phase =0:0.0゚,=1:180゚
  2014.                           BIT2:Wave Shape =0:Normal
  2015.                                 =1:for Flanger)
  2016.     effect[ofs+3]:Shape                       ($9D~$63:-99~+99)
  2017.     effect[ofs+4]:Dummy                       0
  2018.     effect[ofs+5]:Dummy                       0
  2019.     effect[ofs+6]:EQ High                     ($F4~$0C:-12~+12)
  2020.     effect[ofs+7]:EQ Low                      ($F4~$0C:-12~+12)
  2021.  
  2022.     20:Equalizer
  2023.     effect[ofs+0]:Dummy                       0
  2024.          :                                       :
  2025.     effect[ofs+3]:Dummy                       0
  2026.     effect[ofs+4]:Low fc                      (0~2:0.25k,0.50k,1.00k)
  2027.     effect[ofs+5]:High fc                     (0~2:1k,2k,4k)
  2028.     effect[ofs+6]:High Gain                   ($F4~$0C:-12~+12)
  2029.     effect[ofs+7]:Low Gain                    ($F4~$0C:-12~+12)
  2030.  
  2031.     21:Overdrive
  2032.     effect[ofs+0]:Dummy                       0
  2033.     effect[ofs+1]:Dummy                       0
  2034.     effect[ofs+2]:Drive                       (0~99)
  2035.     effect[ofs+3]:Level                       (0~99)
  2036.     effect[ofs+4]:Dummy                       0
  2037.     effect[ofs+5]:Dummy                       0
  2038.     effect[ofs+6]:EQ High                     ($F4~$0C:-12~+12)
  2039.     effect[ofs+7]:EQ Low                      ($F4~$0C:-12~+12)
  2040.  
  2041.     22:Distortion
  2042.     effect[ofs+0]:Dummy                       0
  2043.     effect[ofs+1]:Dummy                       0
  2044.     effect[ofs+2]:Distortion                  (0~99)
  2045.     effect[ofs+3]:Level                       (0~99)
  2046.     effect[ofs+4]:Dummy                       0
  2047.     effect[ofs+5]:Dummy                       0
  2048.     effect[ofs+6]:Dummy                       0
  2049.     effect[ofs+7]:EQ Low Gain                 ($F4~$0C:-12~+12)
  2050.  
  2051.     23:Exciter
  2052.  
  2053.     effect[ofs+0]:Blend                       ($9D~$63:-99~+99)
  2054.     effect[ofs+1]:Emphatic Point              (0~9:1~10)
  2055.     effect[ofs+2]:Dummy                       0
  2056.          :                                    :
  2057.     effect[ofs+5]:Dummy                       0
  2058.     effect[ofs+6]:EQ High                     ($F4~$0C:-12~+12)
  2059.     effect[ofs+7]:EQ Low                      ($F4~$0C:-12~+12)
  2060.  
  2061.     24:Synphonic Ensamble
  2062.     effect[ofs+0]:Depth                       (0~99)
  2063.     effect[ofs+1]:Dummy                       0
  2064.          :                                    :
  2065.     effect[ofs+5]:Dummy                       0
  2066.     effect[ofs+6]:EQ High                     ($F4~$0C:-12~+12)
  2067.     effect[ofs+7]:EQ Low                      ($F4~$0C:-12~+12)
  2068.  
  2069.     25:Roteffect Speaker
  2070.     effect[ofs+0]:Depth                       (0~99)
  2071.     effect[ofs+1]:Dummy                       0
  2072.     effect[ofs+2]:Speed Rate                  ($F6~$0A:-10~+10)
  2073.     effect[ofs+3]:Dummy                       0
  2074.          :                                       :
  2075.     effect[ofs+7]:Dummy                       0
  2076.  
  2077.     26:Delay/Hall
  2078.     effect[ofs+0]:Delay Time (L)              (0~500)
  2079.     effect[ofs+1]:Delay Time (H)
  2080.     effect[ofs+2]:Feedback                    ($9D~$63:-99~99)
  2081.     effect[ofs+3]:High Damp                   (0~99)
  2082.     effect[ofs+4]:Reverb Time                 (0~97:0.2~9.9)
  2083.     effect[ofs+5]:Dummy                       0
  2084.     effect[ofs+6]:High Damp                   (0~99)
  2085.     effect[ofs+7]:Pre Delay                   (0~150)
  2086.  
  2087.     27:Delay/Room
  2088.     effect[ofs+0]:Delay Time (L)              (0~500)
  2089.     effect[ofs+1]:Delay Time (H)
  2090.     effect[ofs+2]:Feedback                    ($9D~$63:-99~99)
  2091.     effect[ofs+3]:High Damp                   (0~99)
  2092.     effect[ofs+4]:Reverb Time                 (0~97:0.2~9.9)
  2093.     effect[ofs+5]:Dummy                       0
  2094.     effect[ofs+6]:High Damp                   (0~99)
  2095.     effect[ofs+7]:Pre Delay                   (0~150)
  2096.  
  2097.     28:Delay/Early Reflection
  2098.     effect[ofs+0]:Delay Time (L)              (0~500)
  2099.     effect[ofs+1]:Delay Time (H)
  2100.     effect[ofs+2]:Feedback                    ($9D~$63:-99~99)
  2101.     effect[ofs+3]:High Damp                   (0~99)
  2102.     effect[ofs+4]:E/R Time                    (0~30:100~400)
  2103.     effect[ofs+5]:Pre Delay                   (0~150)
  2104.     effect[ofs+6]:Dummy                       0
  2105.     effect[ofs+7]:Dummy                       0
  2106.  
  2107.     29:Delay/Chorus
  2108.     effect[ofs+0]:Delay Time L (L)            (0~500)
  2109.     effect[ofs+1]:Delay Time L (H)
  2110.     effect[ofs+2]:Feedback L                  ($9D~$63:-99~99)
  2111.     effect[ofs+3]:High Damp L                 (0~99)
  2112.     effect[ofs+4]:Delay Time R (L)            (0~500)
  2113.     effect[ofs+5]:Delay Time R (H)
  2114.     effect[ofs+6]:Feedback R                  ($9D~$63:-99~99)
  2115.     effect[ofs+7]:High Damp R                 (0~99)
  2116.  
  2117.     30:Delay/Chorus (31:Delay Flanger)
  2118.     effect[ofs+0]:Delay Time (L)              (0~500)
  2119.     effect[ofs+1]:Delay Time (H)
  2120.     effect[ofs+2]:Feedback                    ($9D~$63:-99~99)
  2121.     effect[ofs+3]:High Damp                   (0~99)
  2122.     effect[ofs+4]:Depth                       (0~99)
  2123.     effect[ofs+5]:Speed                       (0~99:0.03~3.00 0.03step
  2124.                           100~199:3.1~13.0 0.1step
  2125.                           200~216:14.0~30.0 1.0step)
  2126.     effect[ofs+6]:LFO Status                  (BIT0:Waveform =0:Sin,=1:Tri
  2127.                           BIT1:Phase =0:0.0゚,=1:180゚
  2128.                           BIT2:Wave Shape =0:Normal
  2129.                                 =1:for Flanger)
  2130.     effect[ofs+7]:Feedback                    0,($9D~$63:-99~99)
  2131.  
  2132.     32:Delay/Phaser
  2133.     effect[ofs+0]:Delay Time (L)              (0~500)
  2134.     effect[ofs+1]:Delay Time (H)
  2135.     effect[ofs+2]:Feedback                    ($9D~$63:-99~99)
  2136.     effect[ofs+3]:High Damp                   (0~99)
  2137.     effect[ofs+4]:Depth                       (0~99)
  2138.     effect[ofs+5]:Speed                       (0~99:0.03~3.00 0.03step)
  2139.     effect[ofs+6]:Feedback                    ($9D~$63:-99~99)
  2140.     effect[ofs+7]:Dummy                       0
  2141.  
  2142.     33:Delay/Tremolo
  2143.     effect[ofs+0]:Delay Time (L)              (0~500)
  2144.     effect[ofs+1]:Delay Time (H)
  2145.     effect[ofs+2]:Feedback                    ($9D~$63:-99~99)
  2146.     effect[ofs+3]:High Damp                   (0~99)
  2147.     effect[ofs+4]:Depth                       (0~99)
  2148.     effect[ofs+5]:Speed                       (0~99:0.03~3.00 0.03step)
  2149.     effect[ofs+6]:Dummy                       0
  2150.     effect[ofs+7]:Shape                       ($9D~$63:-99~99)
  2151.         (M1マニュアルp127参照)
  2152. *-----------------------------------------------------------------------------
  2153.     int    zm_m1_print( int size,char *mes );
  2154.  
  2155. 機能    M1のSEQ-SONG0のタイトル設定
  2156.  
  2157. 引数    int size:メッセージ長(1-10)
  2158.     char *mes:文字列格納バッファ
  2159.  
  2160. 戻り値    0:正常終了
  2161.     0以外:エラーコード
  2162.  
  2163. 備考    メッセージは10文字以内でchar *mesからの領域に文字列を記述しておく。
  2164. *-----------------------------------------------------------------------------
  2165.     int    zm_send_to_m1( int port,int id );
  2166.  
  2167. 機能    M1へパラメータを送信する
  2168.  
  2169. 引数    int port:MIDIポートの番号(0-3)
  2170.          -1はカレントMIDI-OUTを使用
  2171.     int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
  2172.  
  2173. 戻り値    0:正常終了
  2174.     0以外:エラーコード
  2175.  
  2176. 備考    DEVICE ID=&H30+(グローバルチャンネル-1)
  2177.     グローバルチャンネルとはGLOBALモードのF5-1で設定出来る。
  2178.     idは省略可能。省略すると以前設定したものが選択される。最初の使用時に
  2179.     省略した場合はZMUSIC内のデフォルト値$30が選択される。
  2180.     必ず'm1_setup()'~'m1_print()'を設定してからこの命令を実行すること。
  2181.     'm1_effect_setup()'のみ省略が可能。この時はZMUSICが持つデフォルトデータが
  2182.     送信される。
  2183.     'm1_setup()'~'m1_print()'の間にM1関係以外のコマンドがあると正常なデータが
  2184.     送信されない。
  2185.  
  2186.         char a[8]={2,1,4,3,6,5,8,7};
  2187.         /*音色,音量,キートランスポーズ,デチューン,パンのフォーマット*/
  2188.         char b[40]={  0,99,0,0,5,  /*TRACK 1*/
  2189.                       0,99,0,0,5,  /*TRACK 2*/
  2190.                       0,99,0,0,5,  /*TRACK 3*/
  2191.                       0,99,0,0,5,  /*TRACK 4*/
  2192.                       0,99,0,0,5,  /*TRACK 5*/
  2193.                       0,99,0,0,5,  /*TRACK 6*/
  2194.                       0,99,0,0,5,  /*TRACK 7*/
  2195.                       0,99,0,0,5}; /*TRACK 8*/
  2196.         m1_setup(a);
  2197.         m1_part_setup(b);
  2198.         m1_print(7,"Zenji.N");
  2199.         send_to_m1(-1,&H30);
  2200. *-----------------------------------------------------------------------------
  2201.     char    *zm_pcm_read( int num,int flag,int type,int orig,char *param);
  2202.  
  2203. 機能    (AD)PCMファイルの登録
  2204.  
  2205. 引数    int num:登録番号 (トーン番号の場合:0~32767)
  2206.              (音色番号の場合:$8000+(0~32767)
  2207.     int flag:(AD)PCM加工コマンド(PPC)で(AD)PCMデータ加工するか(-1:YES,0:NO)
  2208.     int type:登録次元(-1:ADPCM,1=16BitPCM,0=V2互換)
  2209.     int orig:オリジナルキー:0-127
  2210.     char *param:登録データ情報およびPPC列格納バッファ(備考参照)
  2211.  
  2212. 戻り値    0以外:char *param処理後のアドレス
  2213.     0:エラー
  2214.  
  2215. 備考    char *paramからはまず、最大32文字分の音色名文字列を格納する。
  2216.     終端コードは0。
  2217.     次にディスクから(AD)PCMファイルを読みこむ場合はそのファイル名を
  2218.     格納する。終端コードは0。...(1)
  2219.     ディスクからデータを読み込まずにすでにZMUSIC側に登録されている
  2220.     (AD)PCMデータをコピーして加工するには音色名の後に $0000 を格納し
  2221.     さらにその後に参照番号を指定する。...(2)
  2222.     PPCで(AD)PCMを加工する場合には、PPC列をこの後ろに格納しておく。
  2223.     また、PPCで(AD)PCMを加工する場合は必ずint flagを-1とすること。
  2224.     int flagが0だとたとえPPCがあっても無視される。
  2225.     PPCについてはMEASURE12を参照。
  2226.  
  2227.     (1)の場合
  2228.     [TONE NAME...最大32文字],0,[FILENAME文字列],0,PPCコマンド列...
  2229.  
  2230.     (2)の場合
  2231.     [TONE NAME...最大32文字],0,$00,$00,参照先番号(2bytes),PPCコマンド列...
  2232.     参照先番号は
  2233.     ノート番号の場合:0~32767
  2234.     音色番号の場合:$8000+(0~32767)
  2235.     で表される。
  2236. *-----------------------------------------------------------------------------
  2237.     int    zm_pcm_erase( int num );
  2238.  
  2239. 機能    (AD)PCMファイルの登録取消
  2240.  
  2241. 引数    int num:取消したい登録番号(ノート番号の場合:0~32767)
  2242.                    (音色番号の場合:$8000+(0~32767)
  2243.  
  2244. 戻り値    0:正常終了
  2245.     0以外:エラーコード
  2246. *-----------------------------------------------------------------------------
  2247.     int    zm_register_zpd( char *zpd );
  2248.  
  2249. 機能    ZPDの登録
  2250.  
  2251. 引数    char *zpd:登録するZPDのファイルネーム
  2252.  
  2253. 戻り値    0:正常終了
  2254.     0以外:エラーコード
  2255. *-----------------------------------------------------------------------------
  2256.     int    zm_set_zpd_table( int ver,char *zpd );
  2257.  
  2258. 機能    ZPDテーブルの登録
  2259.  
  2260. 引数    int ver:ZPDバージョンタイプ(0:V1.0~V2.0,1:V3,2:PDX)
  2261.     char *zpd:登録するZPDテーブル(ZPDヘッダ「$1a,'ZmaDPcM'」含まず)
  2262.  
  2263. 戻り値    0:正常終了
  2264.     0以外:エラーコード
  2265.  
  2266. 備考    ZPDのテーブルの構造に付いてはMEASURE12を参照
  2267. *-----------------------------------------------------------------------------
  2268.     int    zm_exec_subfile( char *filename );
  2269.  
  2270. 機能    サブファイルの読み込みと実行
  2271.  
  2272. 引数    char *filename:サブファイルのファイル名
  2273.  
  2274. 戻り値    0:正常終了
  2275.     0以外:エラーコード
  2276.  
  2277. 備考    サブファイルとは演奏の際に必要となる別ファイルにまとめた
  2278.     補助ファイルのことを指す。具体的には、演奏ファイル(ZMS,ZMD,OPM)、
  2279.     ADPCM定義リスト(CNF),ZPDファイル、MIDIデータファイル(MDD,MID)など。
  2280. *-----------------------------------------------------------------------------
  2281.     int    zm_transmit_midi_dump( int port,char *filename );
  2282.  
  2283. 機能    MIDIデータファイルの転送
  2284.  
  2285. 引数    int port:MIDIポートの番号(0-3)
  2286.          -1はカレントMIDI-OUTを使用
  2287.     char *filename:MIDIデータファイルのファイル名
  2288.  
  2289. 戻り値    0:正常終了
  2290.     0以外:エラーコード
  2291.  
  2292. 備考    MIDIデータファイルにはV1からV2で標準MIDIデータファイルと
  2293.     されてきたMDDファイルとV3から採用されたスタンダードMIDI
  2294.     ファイル(FORMAT0)のMIDIファイルの2タイプがあるが、
  2295.     この関数ではどちらも楽器へ転送することができる。
  2296. *-----------------------------------------------------------------------------
  2297.     int    zm_set_wave_form1( int wave,char *data );
  2298.  
  2299. 機能    波形メモリの登録1
  2300.  
  2301. 引数    int wave:波形番号(8-32767)
  2302.     char *data:波形メモリデータ格納バッファ
  2303.  
  2304. 戻り値    0:正常終了
  2305.     0以外:エラーコード
  2306.  
  2307. 備考    char *dataで表される波形メモリデータは以下の構成を取る。
  2308.     data+0(int):波形のデータサイズ(必ず偶数)
  2309.     data+4(char):ループタイプ(0:oneshot,1:repeat,2:altanative)
  2310.     data+5(int):ループ開始オフセット
  2311.     data+9(int):ループ終了オフセット
  2312.     data+13(int):ループ回数(0:∞,1~)
  2313.     data+17(int):ダミー
  2314.     data+21(char):波形名文字列長
  2315.     data+22(?bytes):文字列(終端コード0無し)
  2316.     偶数アドレスから実際の波形データ(signed short)
  2317.         :
  2318.         :
  2319.     ※本関数で登録された波形はZMUSICに取り込まれるため、関数実行後
  2320.     波形データ本体のメモリを解放しても構わない。
  2321. *-----------------------------------------------------------------------------
  2322.     int    zm_set_wave_form2( int wave,char *data );
  2323.  
  2324. 機能    波形メモリの登録2
  2325.  
  2326. 引数    int wave:波形番号(8-32767)
  2327.     char *data:波形メモリデータ格納バッファ
  2328.  
  2329. 戻り値    0:正常終了
  2330.     0以外:エラーコード
  2331.  
  2332. 備考    char *dataで表される波形メモリデータは以下の構成は
  2333.     zm_set_wave_form1()と同じ
  2334.     ※本関数で登録された波形はZMUSICに取り込まれないため、関数実行後
  2335.     波形データ本体のメモリを解放してはならない。
  2336. *-----------------------------------------------------------------------------
  2337.     int    *zm_obtain_events( int omt,int *event );
  2338.  
  2339. 機能    各種イベントの取得
  2340.  
  2341. 引数    int omt:どのイベントに関する設定を行うかのビットマーカー
  2342.         ビット=1でそのイベントの設定を更新する。
  2343.     int event(8):各種イベント発生時のジャンプ先とジャンプ条件が
  2344.              記述された配列。構成は備考参照。
  2345.              -1とするとint omtによらず設定は一切行わない。
  2346.  
  2347. 戻り値    現在の設定を格納した領域のアドレス。構成は備考参照。
  2348.  
  2349. 備考    event(0):m_playが実行された時のジャンプ先アドレス        omtのd0ビット
  2350.     event(1):m_stopが実行された時のジャンプ先アドレス        omtのd1ビット
  2351.     event(2):m_contが実行された時のジャンプ先アドレス        omtのd2ビット
  2352.     event(3):演奏が終了した時のジャンプ先アドレス            omtのd3ビット
  2353.     event(4):指定ループ回数(0:OFF,1-256)                omtのd4ビット
  2354.     event(5):指定回数ループした時のジャンプ先アドレス        omtのd5ビット
  2355.     event(6):指定クロック(0:OFF,1~)                omtのd6ビット
  2356.     event(7):演奏開始後指定クロック経過した時のジャンプ先アドレス    omtのd7ビット
  2357.  
  2358.     int omtでビット=1としたパラメータのみをint event(0)から記述しておく。
  2359.     int omtでビット=0としたパラメータに関しては記述しない。
  2360.     たとえばint omt=$81の場合、int event(0)からは
  2361.     event(0)に「m_playが実行された時のジャンプ先アドレス」
  2362.     event(1)に「演奏開始後指定クロック経過した時のジャンプ先アドレス」
  2363.     を記述しておけばよい。
  2364. *-----------------------------------------------------------------------------
  2365.     int    zm_loop_control( int mode );
  2366.  
  2367. 機能    現在の演奏のループを制御する
  2368.  
  2369. 引数    int mode:ループ制御モード
  2370.          -1=現在のループ回数を得る
  2371.           0=通常ループモード
  2372.          1=ループしない
  2373.  
  2374. 戻り値    -1以外:現在のループ回数(1~)
  2375.     -1:エラー
  2376. *-----------------------------------------------------------------------------
  2377.     short    *zm_mask_tracks( short *track );
  2378.  
  2379. 機能    トラックマスク
  2380.  
  2381. 引数    short *track:マスクするトラックとマスク・モードのペアを格納したバッファ
  2382.  
  2383. 戻り値    設定出来なかったトラック番号(short int)の並びを格納した領域のアドレス
  2384.     終端コード=-1(short)
  2385.  
  2386. 備考    short *trackからは
  2387.     (short)トラック番号:0-65534,
  2388.     (short)マスクモード(0:MASK OFF,1:REVERSE,-1:MASK ON)
  2389.     の数値列を記載する。終端コードは(short)-1。
  2390. *-----------------------------------------------------------------------------
  2391.     int    zm_mask_all_tracks( int mode );
  2392.  
  2393. 機能    全トラックマスク
  2394.  
  2395. 引数    int mode:(0:MASK OFF,1:REVERSE,-1:MASK ON)
  2396.  
  2397. 戻り値    0:正常終了
  2398.     0以外:エラーコード
  2399. *-----------------------------------------------------------------------------
  2400.     int    zm_solo_track( int track );
  2401.  
  2402. 機能    ソロトラック演奏
  2403.  
  2404. 引数    int track:トラック番号(0-65534)
  2405.  
  2406. 戻り値    0:正常終了
  2407.     0以外:エラーコード
  2408. *-----------------------------------------------------------------------------
  2409.     int    *zm_mask_channels( short *channel );
  2410.  
  2411. 機能    チャンネルマスク
  2412.  
  2413. 引数    short *channel:マスクするチャンネルIDとマスク・モードのペアを
  2414.                 格納したアドレス
  2415.  
  2416. 戻り値    設定出来なかった(int)チャンネルIDの並びを格納したアドレス
  2417.     終端コード=(int)-1
  2418.  
  2419. 備考    int *channelからは
  2420.     (int)チャンネルID,(short)マスクモード
  2421.     の数値列を記載する。なお、チャンネルIDは
  2422.     チャンネルID(上位16ビット):0=FM音源,1=ADPCM音源
  2423.                    $8000=MIDI1,$8001=MIDI2
  2424.                    $8002=MIDI3,$8003=MIDI4
  2425.                    -1=カレントMIDI
  2426.     チャンネルID(下位16ビット):チャンネル番号0-15
  2427.     マスクモードは(0:MASK OFF,1:REVERSE,-1:MASK ON)    の値をとる。
  2428.     終端コードは(short)-1。
  2429.     たとえばMIDI1の15チャンネル(ID:$8000_000e)をマスク(ID:$ffff)、
  2430.     ADPCMの3チャンネル(ID:$0001_0002)をマスク反転(ID:$0001)する場合は
  2431.     { 0x8000,0x000e,0xffff,0x0001,0x0002,0x0001,0xffff}
  2432.     となる。
  2433. *-----------------------------------------------------------------------------
  2434.     void    zm_mask_all_channels( int mode );
  2435.  
  2436. 機能    全チャンネルマスク
  2437.  
  2438. 引数    int mode:(0:MASK OFF,1:REVERSE,-1:MASK ON)
  2439.  
  2440. 戻り値    0:正常終了
  2441.     0以外:エラーコード
  2442. *-----------------------------------------------------------------------------
  2443.     void    zm_solo_channel( int channel );
  2444.  
  2445. 機能    ソロチャンネル演奏
  2446.  
  2447. 引数    int channel:(上位16ビット):0=FM音源,1=ADPCM音源
  2448.                    $8000=MIDI1,$8001=MIDI2
  2449.                    $8002=MIDI3,$8003=MIDI4
  2450.                    -1=カレントMIDI
  2451.     int channel:(下位16ビット):チャンネル番号0-15
  2452.  
  2453. 戻り値    0:正常終了
  2454.     0以外:エラーコード
  2455. *-----------------------------------------------------------------------------
  2456.     int    zm_set_ch_output_level( char *out );
  2457.  
  2458. 機能    各チャンネルの出力レベルの設定
  2459.  
  2460. 引数    char *out:出力パラメータを記載した領域
  2461.  
  2462. 戻り値    0:正常終了
  2463.     0以外:エラーコード
  2464.  
  2465. 備考    char *outからは以下の構成の出力パラメータを格納しておく。
  2466.     out+0(short):デバイス(0=FM音源,1=ADPCM音源
  2467.                   $8000=MIDI1,$8001=MIDI2
  2468.                   $8002=MIDI3,$8003=MIDI4
  2469.                   -1=カレントMIDI)
  2470.     out+2(short):チャンネル番号(0-15)
  2471.     out+4(char):パラメータ有効ビット(d0:移動速度,d1:開始レベル,d2:終了レベルに
  2472.             それぞれ対応しビット=1でそのパラメータが後続しこれを設定する)
  2473.     out+5(short):移動速度(フェーダー移動速度。0で動かさない)
  2474.     out+7(char):フェーダー移動開始レベル(0-128)
  2475.     out+8(char):フェーダー移動終了レベル(0-128)
  2476. *-----------------------------------------------------------------------------
  2477.     int    zm_set_tr_output_level( char *out );
  2478.  
  2479. 機能    各トラックの出力レベルの設定
  2480.  
  2481. 引数    char *out:出力パラメータを記載した領域
  2482.  
  2483. 戻り値    0:正常終了
  2484.     0以外:エラーコード
  2485.  
  2486. 備考    char *outからは以下の構成の出力パラメータを格納しておく。
  2487.     out+0(short):トラック番号(0-65534)
  2488.     out+2(char):パラメータ有効ビット(d0:移動速度,d1:開始レベル,d2:終了レベルに
  2489.             それぞれ対応しビット=1でそのパラメータが後続しこれを設定する)
  2490.     out+3(short):移動速度(フェーダー移動速度。0で動かさない)
  2491.     out+5(char):フェーダー移動開始レベル(0-128)
  2492.     out+6(char):フェーダー移動終了レベル(0-128)
  2493. *-----------------------------------------------------------------------------
  2494.     int    zm_master_fader( char *fdr );
  2495.  
  2496. 機能    マスターフェーダーの設定
  2497.  
  2498. 引数    char *fdr:出力パラメータを記載した領域
  2499.  
  2500. 戻り値    0:正常終了
  2501.     0以外:エラーコード
  2502.  
  2503. 備考    char *fdrからは以下の構成の出力パラメータを格納しておく。
  2504.     out+0(short):デバイス(0=FM音源,1=ADPCM音源
  2505.                   $8000=MIDI1,$8001=MIDI2
  2506.                   $8002=MIDI3,$8003=MIDI4
  2507.                   -1=カレントMIDI)
  2508.     out+2(char):パラメータ有効ビット(d0:移動速度,d1:開始レベル,d2:終了レベルに
  2509.             それぞれ対応しビット=1でそのパラメータが後続しこれを設定する)
  2510.     out+3(short):移動速度(フェーダー移動速度。0で動かさない)
  2511.     out+5(char):フェーダー移動開始レベル(0-128)
  2512.     out+6(char):フェーダー移動終了レベル(0-128)
  2513. *-----------------------------------------------------------------------------
  2514.     int    zm_get_fader_status( void );
  2515.  
  2516. 機能    フェーダーの状態取得
  2517.  
  2518. 引数    なし
  2519.  
  2520. 戻り値 d0,d1,d6,d7ビットに検査結果が反映される。
  2521.  
  2522.     d0:実行中のチャンネルフェーダーすべてが目的に達している(1:達成した 0:達成していない)
  2523.     d1:実行中のマスターフェーダーすべてが目的に達している(1:達成した 0:達成していない)
  2524.     d6:チャンネルフェーダーの状態(1:実行中 0:実行されていない)
  2525.     d7:マスターフェーダーの状態(1:実行中 0:実行されていない)
  2526. *-----------------------------------------------------------------------------
  2527.     int    zm_get_play_time( void );
  2528.  
  2529. 機能    演奏時間の取得
  2530.  
  2531. 引数    なし
  2532.  
  2533. 戻り値 16進表現で00HHMMSSという書式で返ってくる。
  2534.     なおHH:0-99,MM:0-59,SS:0-59の値を取る。
  2535. *-----------------------------------------------------------------------------
  2536.     char    *zm_get_1st_comment( void );
  2537.  
  2538. 機能    演奏中の曲のコメントを取り出す
  2539.  
  2540. 引数    なし
  2541.  
  2542. 戻り値 文字列のポインタ
  2543.     終端コードは0
  2544. *-----------------------------------------------------------------------------
  2545.     int    zm_get_timer_mode( void );
  2546.  
  2547. 機能    現在のテンポソースとなっているタイマの種類を返す
  2548.  
  2549. 引数    なし
  2550.  
  2551. 戻り値 0:タイマ A,1:タイマ B,2:YM3802タイマ
  2552. *-----------------------------------------------------------------------------
  2553.     short    *zm_get_track_table( void );
  2554.  
  2555. 機能    音楽演奏トラックテーブルのアドレスを得る
  2556.  
  2557. 引数    なし
  2558.  
  2559. 戻り値 音楽演奏トラックテーブルのアドレス
  2560.  
  2561. 備考    音楽演奏トラックテーブルには演奏に使用される(short)トラック番号が
  2562.     (short)-1を終端コードとし羅列される。
  2563. *-----------------------------------------------------------------------------
  2564.     short    *zm_get_track_table_se( void );
  2565.  
  2566. 機能    効果音演奏トラックテーブルのアドレスを得る
  2567.  
  2568. 引数    なし
  2569.  
  2570. 戻り値 効果音演奏トラックテーブルのアドレス
  2571.  
  2572. 備考    効果音演奏トラックテーブルには演奏に使用される(short)トラック番号が
  2573.     (short)-1を終端コードとし羅列される。
  2574. *-----------------------------------------------------------------------------
  2575.     char    *zm_get_play_work( int track );
  2576.  
  2577. 機能    音楽演奏トラックワークのアドレスを得る
  2578.  
  2579. 引数    int track:トラック番号(0-65534)
  2580.  
  2581. 戻り値 音楽演奏トラックワークのアドレス
  2582.  
  2583. 備考    音楽演奏トラックワークの内容と構成に付いてはMEASURE13を参照のこと。
  2584. *-----------------------------------------------------------------------------
  2585.     char    *zm_get_play_work_se( int track );
  2586.  
  2587. 機能    効果音演奏トラックワークのアドレスを得る
  2588.  
  2589. 引数    int track:トラック番号(0-65534)
  2590.  
  2591. 戻り値 効果音演奏トラックワークのアドレス
  2592.  
  2593. 備考    効果音演奏トラックワークの内容と構成は音楽演奏トラックと同一。
  2594. *-----------------------------------------------------------------------------
  2595.     char    *zm_get_buffer_information( void );
  2596.  
  2597. 機能    バッファ・アドレステーブルのアドレス
  2598.  
  2599. 引数    なし
  2600.  
  2601. 戻り値 バッファ・アドレステーブルのアドレス
  2602.  
  2603. 備考    バッファ・アドレステーブルの構成に付いてはMEASURE13を参照のこと
  2604. *-----------------------------------------------------------------------------
  2605.     char    *zm_zmsc_status( void );
  2606.  
  2607. 機能    ZMUSICの状態ワークのアドレス
  2608.  
  2609. 引数    なし
  2610.  
  2611. 戻り値 ZMUSICの状態ワークのアドレス
  2612.  
  2613. 備考    ZMUSICの状態ワークのアドレスの構成に付いてはMEASURE13を参照のこと
  2614. *-----------------------------------------------------------------------------
  2615.     int    zm_calc_total( char *zmd,char **result);
  2616.  
  2617. 機能    ZMDの演奏時間やトータルステップタイムなどの計算
  2618.  
  2619. 引数    char *zmd:ZMDの先頭アドレス(ヘッダはあってもなくてもよい)
  2620.     char **result:戻り値を格納するための変数
  2621.  
  2622. 戻り値    0:正常終了
  2623.     0以外:発生したエラーの数
  2624.  
  2625. 備考    ・戻り値が0の場合はchar **resultには計算結果データ列を格納した領域の
  2626.      ポインタが返される。計算結果データ列の構成に付いてはMEASURE10
  2627.       ファンクションZM_CALC_TOTALの項を参照のこと。
  2628.     ・戻り値が0以外の場合はchar **resultにはエラーの内容を格納した
  2629.      エラーテーブルのアドレスが返される。
  2630.      エラーテーブルの構成に付いてはMEASURE11を参照のこと。
  2631.     ・いずれの場合もchar **resultに返された領域は使用後free_mem()などで
  2632.      解放すること。
  2633.     ・この関数はコンパイラに含まれる外部組み込みのファンクションと
  2634.      であるため、使用前にはコンパイラの常駐を確認する必要がある。
  2635. *-----------------------------------------------------------------------------
  2636.     int    zm_register_application( char *addr,int *result);
  2637.  
  2638. 機能    外部アプリケーションの常駐解除ルーチンの登録
  2639.  
  2640. 引数    char *addr:外部アプリケーションの常駐解除ルーチンの先頭アドレス
  2641.     int *result:戻り値を格納するための変数
  2642.  
  2643. 戻り値    0:エラー
  2644.     0以外:正常終了
  2645.  
  2646. 備考    ・ZMUSICが常駐解除する時に同時に解除出来るようにするための手続き。
  2647.      ZMUSICが常駐解除するときchar *addrのルーチンにエントリする。
  2648.     ・int *resultには登録IDが返される。このIDは常駐解除ルーチンの
  2649.      登録をキャンセル「zm_unregister_application()」する場合に用いる。
  2650.     ・char *addrから始まる各解放ルーチンは必要処理を実行後、最後に
  2651.      ZMUSIC側で解放してほしいメモリブロックがあるならば
  2652.      そのアドレスをa0.lにかえすようにすること。
  2653.      なければa0.l=0を返すこと
  2654.     ・char *addrからの解放ルーチンの実行後に、なにか表示したい
  2655.      メッセージが有る場合はその文字列のアドレスをa1.lに返すようにすること。
  2656.      なければa1.l=0を返すこと
  2657.     ・char *addrからの解放ルーチンでエラーが発生した場合は戻り値として
  2658.      d0.l(0:no error,1:occupied,-1:error)を返すことが出来る。
  2659.      エラーが発生した場合もその旨を告げるメッセージ文字列をa1.lに
  2660.      与えることが出来る。
  2661. *-----------------------------------------------------------------------------
  2662.     int    zm_unregister_application( int result);
  2663.  
  2664. 機能    外部アプリケーションの常駐解除ルーチンの登録キャンセル
  2665.  
  2666. 引数    int result:zm_register_application()の戻り値
  2667.  
  2668. 戻り値    0:エラー
  2669.     0以外:正常終了
  2670. *-----------------------------------------------------------------------------
  2671.     int    zm_release_driver( char **zmsc );
  2672.  
  2673. 機能    ZMUSICの解除
  2674.  
  2675. 引数    char **zmsc:ZMUSICの常駐解除アドレス
  2676.  
  2677. 戻り値    0:正常終了
  2678.     0以外:エラーコード(常駐解除失敗)
  2679.  
  2680. 備考    char **zmscで示される領域をシステムのメモリ解放コールを呼び出して
  2681.     解放した時点でZMUSICの常駐解除が完全に行われたことになる。
  2682. *-----------------------------------------------------------------------------
  2683.     int    zm_occupy_zmusic( int mode );
  2684.  
  2685. 機能    ZMUSICの占有
  2686.  
  2687. 引数    int mode:1=占有する,0=占有を解除する,-1=占有状態の検査
  2688.  
  2689. 戻り値    mode=0,1のとき:以前の占有状態(0=占有されていない,1=占有されている)
  2690.     mode=-1のとき:現在の占有状態(0=占有されていない,1=占有されている)
  2691. *-----------------------------------------------------------------------------
  2692.     char    *zm_hook_fnc_service( int fnc,char *job );
  2693.  
  2694. 機能    ZMUSICのファンクションコールのフック
  2695.  
  2696. 引数    int fnc:ファンクション番号(0-127)
  2697.     char *job:ユーザーファンクションのエントリ・アドレス
  2698.           -1とすると設定は行わずint fncで指定したファンクション番号の
  2699.           ファンクションのエントリ・アドレスのみを返す。
  2700.  
  2701. 戻り値    フック前のファンクション・エントリ・アドレス
  2702.     0ならば空いていた。
  2703.     -1はエラー
  2704. *-----------------------------------------------------------------------------
  2705.     char    *zm_hook_zmd_service( int zmd,char *job );
  2706.  
  2707. 機能    ZMDオペレーションのフック
  2708.  
  2709. 引数    int zmd(下位16ビット):ZMDコード-128(0-127)
  2710.     int zmd(上位16ビット):(0:FM,1:ADPCM,2:MIDI,
  2711.                    -1:共通コマンド,-2:効果音用共通コマンド,
  2712.                    -3:制御コマンド)
  2713.     char *job:ユーザーZMDオペレーションのエントリ・アドレス
  2714.           -1とすると設定は行わずint zmdで指定したZMDコードの
  2715.           オペレーションのエントリ・アドレスのみを返す。
  2716.  
  2717. 戻り値    フック前のZMDオペレーション・エントリ・アドレス
  2718.     0ならば空いていた。
  2719.     -1はエラー
  2720. *-----------------------------------------------------------------------------
  2721.     int    zm_occupy_compiler( int mode );
  2722.  
  2723. 機能    コンパイラの占有
  2724.  
  2725. 引数    int mode:1=占有,0=占有解除,-1=占有状態検査
  2726.  
  2727. 戻り値    mode=0,1のとき:以前の占有状態(mode=-1の時を参照)
  2728.     mode=-1のとき:0=占有されていない,1=占有されている
  2729. *-----------------------------------------------------------------------------
  2730.     int    zm_store_error( int err,int noferr,char **addr );
  2731.  
  2732. 機能    エラーコードのストア
  2733.  
  2734. 引数    int err(上位16):エラーの発生したファンクション番号(0-32767)
  2735.            (下位16):エラーコード(0-65535)
  2736.         int err=-1とした場合は問い合わせのみでストアは行わない
  2737.     int noferr:エラーの合計個数値に幾つ加算するか
  2738.     char **addr:エラーストックバッファの先頭アドレスを格納する変数
  2739.  
  2740. 戻り値    現在ストックしているエラーの個数
  2741.  
  2742. 備考    ・本関数はユーザーアプリケーション側で発生したエラーをZMUSIC側に
  2743.      知らせたい場合に使用する。ただしその場合、エラーコードフォーマットは
  2744.      MEASURE11で示してある形式に従わなければならない。
  2745.     ・エラーコードに関してはMEASURE11を参照。
  2746. *-----------------------------------------------------------------------------
  2747. int    zm_print_error( int mode,int lang,int noferr,
  2748.             char *ZMD,char *srcaddr,char *srcname,
  2749.             char *errtbl
  2750.             char **buff);
  2751.  
  2752. 機能    エラーメッセージの表示
  2753.  
  2754. 引数    int mode:メッセージの出力先(0:画面,1:バッファ)
  2755.     int lang:メッセージの言語(0:英語,1:日本語)
  2756.     int noferr:エラーの数
  2757.     char *zmd:ZMDのファイル名(無い場合は0)
  2758.     char *srcaddr:ソース(ZMS)のアドレス(無い場合は0)
  2759.     char *srcname:ソース(ZMS)ファイル名(無い場合は0)
  2760.     char *errtbl:エラーストックバッファの先頭アドレス
  2761.     char **buff:出力バッファの先頭アドレスを格納する変数
  2762.             (int mode=1の時のみ有効,バッファの終端には0)
  2763.  
  2764. 戻り値    出力バッファのサイズ。ただし終端の0は含まない。
  2765.  
  2766. 備考    エラーテーブルからエラーメッセージを得る場合などに使用する。
  2767.     char *zmd~char *srcnameは通常の外部アプリケーションならば0でよい。
  2768.     コンパイラなどの場合はそれらを正しく設定すればタグジャンプに
  2769.     対応した出力を得ることが出来る。
  2770. *-----------------------------------------------------------------------------
  2771.     char    *zm_get_mem( int size,int emply );
  2772.  
  2773. 機能    メモリの確保
  2774.  
  2775. 引数    int size:確保サイズ
  2776.     int emply:確保するメモリの用途ID
  2777.  
  2778. 戻り値    0:確保に失敗した
  2779.     0以外:確保したメモリブロックのアドレス
  2780.  
  2781. 備考    メモリの用途IDはMEASURE10 ファンクションZM_GET_MEMの項を参照のこと。
  2782.     ZMUSICに無関係のメモリブロックを確保する場合ならば当関数を
  2783.     用いる必要はない。
  2784. *-----------------------------------------------------------------------------
  2785.     char    *zm_enlarge_mem( int size,char *addr );
  2786.  
  2787. 機能    メモリブロックのサイズの変更
  2788.  
  2789. 引数    int size:変更後のサイズ
  2790.     char *addr:zm_get_mem()で確保したメモリのアドレス
  2791.  
  2792. 戻り値    確保しなおしたメモリブロックのアドレス
  2793.     0ならば確保に失敗した事を意味する
  2794.  
  2795. 備考    ・メモリブロックのサイズを大きくした場合などはメモリブロックの
  2796.      再配置が自動で行われる。そのためchar *addrで与えられたメモリブロックが
  2797.      別のアドレスに移動する場合がある。よってこの関数を実行後は
  2798.      char *addrを戻り値のアドレス値に置き換えるべきである。
  2799.     ・変更に失敗した場合は、char *addrのメモリブロックの内容は保証される。
  2800. *-----------------------------------------------------------------------------
  2801.     int    zm_free_mem( char *addr );
  2802.  
  2803. 機能    メモリブロックの解放
  2804.  
  2805. 引数    char *addr:zm_get_mem()で確保したメモリのアドレス
  2806.  
  2807. 戻り値    0:解放成功
  2808.     0以外:エラーコード
  2809. *-----------------------------------------------------------------------------
  2810.     int    zm_free_mem2( int emply );
  2811.  
  2812. 機能    特定の用途IDを持ったメモリブロックの解放
  2813.  
  2814. 引数    int emply:メモリの用途ID
  2815.  
  2816. 戻り値    0:解放成功
  2817.     0以外:エラーコード
  2818.  
  2819. 備考    メモリの用途IDはMEASURE10 ファンクションZM_GET_MEMの項を参照のこと。
  2820. *-----------------------------------------------------------------------------
  2821.     int    zm_exchange_memid( int mode,int s_emply,int d_emply,char *addr );
  2822.  
  2823. 機能    メモリブロックの用途IDの変更
  2824.  
  2825. 引数    int mode:変更モード(0:チェックなしで変更,1:チェックしてから更新
  2826.                 -1:int s_emplyの用途IDを持つメモリブロックをすべて
  2827.                    int d_emplyの用途IDへ変更する)
  2828.     int s_emply:更新元メモリの用途ID(int mode=0の場合は意味なし)
  2829.     int d_emply:希望メモリの用途ID
  2830.     char *addr:zm_get_mem()で確保したメモリのアドレス
  2831.  
  2832. 戻り値    0:変更成功
  2833.     0以外:エラーコード
  2834.  
  2835. 備考    メモリの用途IDはMEASURE10 ファンクションZM_GET_MEMの項を参照のこと。
  2836. *-----------------------------------------------------------------------------
  2837.     void    zm_init_all( void )
  2838.  
  2839. 機能    ZMUSICの全初期化を行う
  2840.  
  2841. 引数    なし
  2842.  
  2843. 戻り値    Z-MUSICのバージョンID
  2844.  
  2845. 備考    通常のアプリケーションは本関数を利用する必要はない
  2846.     バージョンIDはたとえばバージョン3.21ならば $00003241となる。
  2847.     4の部分は固定値。
  2848. *-----------------------------------------------------------------------------
  2849.     void    zm_int_start( int tmtype );
  2850.  
  2851. 機能    割り込み開始制御
  2852.  
  2853. 引数    int tmtype:制御対象タイマータイプ
  2854.            (-1:音楽タイマ,0:音楽+効果音タイマ,1:効果音タイマ)
  2855.  
  2856. 戻り値    なし
  2857.  
  2858. 備考    通常のアプリケーションは本関数を利用する必要はない
  2859. *-----------------------------------------------------------------------------
  2860.     void    zm_int_stop( int tmtype );
  2861.  
  2862. 機能    割り込み停止制御
  2863.  
  2864. 引数    int tmtype:制御対象タイマータイプ
  2865.            (-1:音楽タイマ,0:音楽+効果音タイマ,1:効果音タイマ)
  2866.  
  2867. 戻り値    なし
  2868.  
  2869. 備考    通常のアプリケーションは本関数を利用する必要はない
  2870. *-----------------------------------------------------------------------------
  2871.     int    zm_set_int_service( int clock,int tempo,char *entry );
  2872.  
  2873. 機能    ユーザ割り込みサービスの設定
  2874.  
  2875. 引数    int clock:全音符のクロック数(1-65535)
  2876.     int tempo:テンポ(1-32767)
  2877.     char *entry:ユーザー割り込みルーチンのエントリアドレス
  2878.  
  2879. 戻り値    0:設定正常終了
  2880.     0以外:設定失敗
  2881.  
  2882. 備考    ・割り込みルーチンの最後はRTEではならない。かならず全レジスタを
  2883.      保存した上でRTSで終了帰還するような作りにすること。
  2884.     ・char *entry=-1とした場合はすでに登録されている割り込みサービスの
  2885.      割込み周期をint clock,int_tempoで変更する機能を果たす。
  2886. *-----------------------------------------------------------------------------
  2887.     char    *zm_check_int_service( void );
  2888.  
  2889. 機能    ユーザ割り込みサービスの状態検査
  2890.  
  2891. 引数    なし
  2892.  
  2893. 戻り値    0:空いている
  2894.     0以外:現在登録されているユーザ割込みルーチンのエントリアドレス
  2895. *-----------------------------------------------------------------------------
  2896.     int    zm_release_int_service( char *entry );
  2897.  
  2898. 機能    ユーザ割り込みサービスの登録解除
  2899.  
  2900. 引数    char *entry:登録したユーザー割り込みルーチンのエントリアドレス
  2901.  
  2902. 戻り値    0:登録解除正常終了
  2903.     0以外:登録解除失敗
  2904. *-----------------------------------------------------------------------------
  2905.     int    zm_control_tempo( int mode );
  2906.  
  2907. 機能    テンポ設定の主導権設定
  2908.  
  2909. 引数    int mode:-1=テンポ設定の主導権を外部アプリケーションに委託
  2910.          0=テンポ設定の主導権をZMUSICに戻す
  2911.             (このとき内部パラメタでテンポの初期化も実施する)
  2912.  
  2913. 戻り値    0:設定正常終了
  2914.     0以外:設定失敗
  2915. *-----------------------------------------------------------------------------
  2916. void    zm_convert_pcm( int mode, int size, char *source, char *destination );
  2917.  
  2918. 機能    PCMデータの変換を行う
  2919.  
  2920. 引数    int mode:変換モード(0:ADPCM to PCM,1:PCM TO ADPCM)
  2921.     int size:変換元の(AD)PCMのデータサイズ
  2922.     char *source:変換元となる(AD)PCMデータの格納領域アドレス
  2923.     char *destination:変換先となる(AD)PCMデータの格納領域アドレス
  2924.  
  2925. 戻り値    なし
  2926. *-----------------------------------------------------------------------------
  2927.     int    zm_work(int track,int offset);
  2928.  
  2929. 機能    演奏トラックワークの内容取得
  2930.  
  2931. 引数    int track:トラック番号(0-65534)
  2932.     int offset:演奏トラックワークオフセット
  2933.  
  2934. 戻り値    ワーク内容(0~255)
  2935.  
  2936. 備考    演奏トラックワークの内容と構成に付いてはMEASURE13を参照のこと。
  2937. *-----------------------------------------------------------------------------
  2938.     int    zm_exec_zmd( int track,int size,char *zmd);
  2939.  
  2940. 機能    ZMD列の実行
  2941.  
  2942. 引数    int track:トラック番号(0-65534,65535:特に指定しない場合)
  2943.     int size:ZMD列の長さ
  2944.     char *zmd:ZMD列格納バッファ(バッファ自体はd2.l+8の大きさを必要とする)
  2945.  
  2946. 戻り値    なし
  2947. *-----------------------------------------------------------------------------
  2948.  
  2949.  
  2950. 16.4.ZMSC3LIB.DEFの利用法
  2951.  
  2952.  
  2953.   ZMUSIC Ver.3.0を利用したX-BASIC(MUSICZ3.FNC)のプログラムをコンパイルする時に
  2954.  
  2955. 使用する。まず、自分のシステムの、BC.X(X-BASICをC言語へコンバートするプログ
  2956.  
  2957. ラム、C言語PRO68Kに付属)が格納してあるディレクトリにZMSC3LIB.DEFをコピーする。
  2958.  
  2959.     A>COPY ZMSC3LIB.DEF A:\BC
  2960.  
  2961.   そのディレクトリ内のBASIC.CNFというファイルを開き
  2962.  
  2963.     FUNC=ZMSC3LIB
  2964.  
  2965. の1行を加えてセーブする。BASIC.CNF中に
  2966.  
  2967.     FUNC=MUSIC
  2968.     FUNC=MUSIC2
  2969.     FUNC=MUSIC3
  2970.     FUNC=ZMUSIC
  2971.  
  2972. などが記述してある場合は、それらをすべて削除する(同名の関数が存在していると
  2973.  
  2974. 誤動作する可能性があるため)。
  2975.  
  2976.  
  2977. 16.5.ZMSC3LIB.Lの利用法
  2978.  
  2979.  
  2980.   コンパイルする時にライブラリファイルとして利用するには、まず自分のシステムの
  2981.  
  2982. ライブラリファイルが格納してあるディレクトリにZMSC3LIB.Lをコピーする。
  2983.  
  2984.     A>COPY ZMSC3LIB.L A:\LIB
  2985.  
  2986.   コンパイルしてできるオブジェクトにZMSC3LIB.Lをリンクし実行ファイルを得るには、
  2987.  
  2988. 例    ZMSC3.Xを使用したX-BASIC(MUSICZ3.FNC)のプログラムをコンパイルする場合
  2989.  
  2990.     A>CC ????.BAS ZMSC3LIB.L
  2991.  
  2992. 例    ZMSC3.Xを使用したC言語のプログラムをコンパイルする場合
  2993.  
  2994.     A>CC ????.C ZMSC3LIB.L
  2995.  
  2996. のようにする。
  2997.